快捷搜索: 王者荣耀 脱发

python3编程06--爬虫实战:爬取新闻网站信息2

本篇博客在的基础上进行。

主要内容如下:

1. 将获取评论数封装成函数

2.将获取页面关心的内容封装成函数,关心内容如下:

3.获取新浪国内最新新闻一个分页的20条新闻链接

将获取评论数封装成函数:

浏览器找到新浪的一条新闻,按F12, 再按F5刷新网页,打开network监听网页,打开js找到评论链接,

观察两条不同评论的链接,

不同的地方是newsid=comos-xxxx部分不一样。xxxx为新闻标识符(newsid),可以用{}来代替,之后用fomat(newsid)来补充内容。

注意:要去掉评论链接后面的的内容,才能获得到json格式的数据。

#获取评论数的函数
import requests
import json
import re

def getCommentsCount(newsurl):
    #获取新闻id(newsid)新闻标识符
    match = re.search(doc-i(.+).shtml, newsurl)
    newsid = match.group(1)
    #评论URL
    commentURL=https://comment.sina.com.cn/page/info?version=1&format=json&channel=gn&newsid=comos-{}&group=undefined&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=3&t_size=3&h_size=3&thread=1
    #补充完整URL
    comments = requests.get(commentURL.format(newsid))
    #输出json字典格式形式
    jd = json.loads(comments.text)
    #取出评论数
    return jd[result][count][total]

测试:

#测试
news = https://news.sina.com.cn/c/2018-11-15/doc-ihnvukff4194550.shtml
getCommentsCount(news)

将获取页面关心的内容封装成函数

#测试
url = https://news.sina.com.cn/c/2018-11-15/doc-ihnvukff4194550.shtml
getNewsDetail(url)

获取新浪国内最新新闻一个分页的20条新闻链接

找到最下方的分页,

点击不同分页,发现呈现的页面只有中间新闻有变化,旁边内容没有变化,说明最新新闻的分页是动态加载的

通过Netwark找到分页相关的URL

复制出分页的URL:

点击第二页

往下拉滚动条,找到最新出现的get?pageid复制出分页的URL:

观察两个分页URL的不一样的地方:

有两处不一样:1是page=1或page=2不一样(我们关心的); 2是&callback=xxx内容不一样(去掉这里能得到json格式数据)

#获取新浪新闻首页的新闻信息---json格式

#获取新浪新闻首页的新闻信息---json格式
requests
import json
res = requests.get(https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8)
jd = json.loads(res.text)
jd

观察输出的数据中有对应的URL()和新闻标题 ,与页面中的标题一致,说明这里的URL对应于该新闻URL

#获取新浪国内最新新闻一个分页的20条新闻链接
for ent in jd[result][data]:
    print(ent[url])

先到这,enjoy it!

经验分享 程序员 微信小程序 职场和发展