Python+Scrapy爬取腾讯新闻首页所有新闻及评论

前言

这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫。选用Python的Scrapy框架。这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址。

Chrome的开发者工具(或Firefox的web控制台)是个很有用的工具,你可以通过它清楚的看到你在访问一个网站的过程中浏览器发送了哪些信息,接收了哪些信息。而在我们编写爬虫的时候,就需要知道我们需要爬取的内容来自哪里,来自哪个链接。

 

正文

腾讯新闻首页上的新闻有三种链接格式

一种是:https://news.qq.com/a/time/newsID.htm

如:https://news.qq.com/a/20180414/010445.htm

一种是:http://new.qq.com/omn/time/newsID.html

如:http://new.qq.com/omn/20180415/20180415A0Z5P3.html

一种是:http://new.qq.com/omn/newsID

如:http://new.qq.com/omn/20180414A000MX00

 

其中:
time:新闻发布日期,第三种新闻链接没有这个值。
newsID:新闻页面的ID,第一种新闻的ID只包含数字,后两种包含数字和字母

 

这三种格式的新闻链接都能在腾讯新闻首页的源代码中得到,如图:

得到了新闻页面之后,接下来是得到新闻的正文,前面两种新闻的正文及其他信息可以直接在页面的源代码中获得。第三种就比较麻烦了,下文会讲到。另外还要通过新闻页面得到评论页面。

三种格式的新闻的评论页链接的格式是相同的
都为http://coral.qq.com/cmtid
如:http://coral.qq.com/2572597712
其中的cmtid为一串数字,标识每一条新闻的评论页面。我们需要在新闻页面中找到这个值,前面两种新闻比较方便,cmtid以及其他新闻信息都在页面源码中,但是第三种新闻就不同了,页面源码中没有我们想要的东西。
这时候就要使用开发者工具来得到第三种新闻评论页的cmtid以及新闻正文。
在第三种新闻的新闻页面http://new.qq.com/omn/newsid,按F12(或右键->检查)调出开发者工具,点击network,F5快捷键刷新。如图:

然后在找到包含所需要信息的地址。如图:

在Headers栏查看地址,如图:

可以得到第三种新闻的cmtid以及正文信息通过这个地址返回:
http://openapi.inews.qq.com/getQQNewsNormalContent?id=newsid&chlid=news_rss&refer=mobilewwwqqcom&otype=jsonp&ext_data=all&srcfrom=newsapp&callback=getNewsContentOnlyOutput
如:http://openapi.inews.qq.com/getQQNewsNormalContent?id=20180414A000MX00&chlid=news_rss&refer=mobilewwwqqcom&otype=jsonp&ext_data=all&srcfrom=newsapp&callback=getNewsContentOnlyOutput

其中newsid就是新闻的id,我们可以通过这个链接得到cmtid、正文内容。

在得到了新闻的cmtid后,然后就要分析得到评论信息的来源地址了
在评论页http://coral.qq.com/cmtid调出开发者工具,刷新得到返回的信息。如图:

在Headers栏查看地址,如图:

可以得到评论通过下面这个地址返回
http://coral.qq.com/article/2530433473/comment/v2?callback=_articlecommentv2&orinum=10&oriorder=t&pageflag=1&cursor=0&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=1&_=1522383466213
其中
2530433473:表示评论页ID。
orinum=10:表示返回评论的数目为10,这个值最大为30,也就是一个页面最多返回30个评论。
orio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值