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!