加载数据分为同步加载和异步加载,同步加载也就是我前几篇的文章那样,只需要分析网站格式,研究网站的自动翻页,这些东西在客户端我们就能根据变化来分析自动翻页,从而可以爬取全站数据。但是,有些网站不是通过翻页来更新数据,而是通过Ajax异步加载来推送数据,(给咱们看到的就是往下一直拉,数据一直更新),而这些包在客户端的开发工具里是看不到的。不过可以通过第三方工具来进行抓包,这里我使用的抓包工具fiddler。关于fidder的配置, 你可以参考其他文章,主要就是设置一些代理的参数.
现在开始分析!这里我拿腾讯视频评论来作为实验,我随便选一个视频,最好是评论数多的

类似于这种的都是通过js包来加载数据,现在我们要打开fiddler,然后刷新一下网页,你会发现fiddler出现了好多数据,这个时候先别急,因为他会一直在变动,等他不变了的时候,咱们ctrl+x或者输入命令clear清一下屏,这是为了后边针对性的分析,此时你可以点一下查看更多评论,你会在fiddler上看到一个js的头标

这个时候你可以点击右边TextView会出现这些

ok 下面就该看看这些都是些什么玩意,上边的稍微知道点英语都能看懂,但是下面的是什么东西,其实这是一种编码,咱们复制一些解码看一下。


正好符合,那下面就该分析js包的规律了
咱们先点击查看更多,保存js地址,再点击一次,再保存地址,循环3次就够摸索规律了,下面是我的结果
- https://video.coral.qq.com/filmreviewr/c/upcomment/j6cgzhtkuonf6te?callback=_filmreviewrcupcommentj6cgzhtkuonf6te&reqnum=3&source=132&commentid=6227734628246412645
- https://video.coral.qq.com/filmreviewr/c/upcomment/j6cgzhtkuonf6te?callback=_filmreviewrcupcommentj6cgzhtkuonf6te&reqnum=3&source=132&commentid=6232162852904795079
- https://video.coral.qq.com/filmreviewr/c/upcomment/j6cgzhtkuonf6te?callback=_filmreviewrcupcommentj6cgzhtkuonf6te&reqnum=3&source=132&commentid=6234994465071252337
这个时候我们发现变化的只有commentid,但是是怎么变得,咱还是要分析一下,你打开第一个网址,你会发现有个last的字段,再看一下个发现还是,那就能确定这个js包的last字段指向的是下一个js包的地址

ok 目前虽然分析的是地址,但为了保险,咱们测试一下先把所有的js地址的commentid看看能不能拿下来

有了这些js地址,下面的就没啥好说的了,分析一下就可以开始爬了


代码简单,这里主要就是分析Ajax内容
import urllib.request import re import ssl ssl._create_default_https_context = ssl._create_unverified_context key="6227734628246412645" while(True): url2 = "https://video.coral.qq.com/filmreviewr/c/upcomment/j6cgzhtkuonf6te?callback=_filmreviewrcupcommentj6cgzhtkuonf6te&reqnum=3&source=132&commentid="+key try: data=urllib.request.urlopen(url2).read().decode("utf-8","ignore") pat1='"last":"(.*?)"' last=re.compile(pat1).findall(data) key=last[0] pat2='"title":"(.*?)","abstract":"' title=re.compile(pat2).findall(data) pat3='"content":"(.*?)"' com=re.compile(pat3).findall(data) for i in range(0,len(title)): print("标题:"+eval('u"'+title[i]+'"')) print("评论:"+eval('u"'+com[i]+'"')) except Exception as err: pass
不错
以后多多交流
我给你点赞了
好
我也是小白以后多多交流