Python数据爬虫学习笔记(12)爬取腾讯视频评论数据(Fiddler抓包+浏览器伪装)

需求:爬取腾讯网站某个视频的所有评论数据,如下图:

工具:Python IDLE、Fiddler抓包工具(配置过程可参照相关博客,需设置为可抓HTTPS)

一、URL分析阶段:

1.打开某视频网页,本博文以斗破苍穹第一集为例,找到评论所在网页位置。

2.转到Fiddler,发现抓取的网址过多,只好输入命令Clear一下,然后点击网页中的“查看更多评论”按钮,即可在Fiddler找出评论所在的JS文件:

·3.复制该JS文件网址到另一个浏览器中观察其源代码,注意到源代码中含有大量的Unicode编码字符,如图。

4.将一段Unicode字符复制到Idle中,用单引号括起来,前面加上字母u,回车即可查看解码后的文字:

扫描二维码关注公众号,回复: 3415623 查看本文章

将汉字在网页中搜索验证,发现确实为评论文字:

5.再次点击“查看更多评论按钮”,再次通过Fiddler进行评论抓包,将评论URL复制下来,再次验证是否是评论的源代码。

6.可以重复上一步骤多次,将每一次的评论URL整理下来进行观察:

重点观察各个URL中不相同的部分,注意到“cursor=XXXXX”不相同,URL最后的一串数字也不相同,但似乎有加一的数值关系(验证后发现该数值并不影响页面内容)。

7.总结发现“cursor”后的数字为连接各个URL的关键的,观察后注意到,第二个URL的cursor代码在第一个URL网页源代码中能够搜索到,如下:

发现在“last”附近,进一步抓包,注意到首个评论分页面的Cursor值为0,由此可产生思路,可通过爬取首个URL的源代码获取到cursor代码,然后构建URL进入下一个评论URL页面。

二、编写代码阶段:

import urllib.request
import re
import urllib.error

#浏览器伪装
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6726.400 QQBrowser/10.2.2265.400")
opener=urllib.request.build_opener()
opener.addheaders=[headers]
urllib.request.install_opener(opener)
#首个Cursor是0
cursor="0"
#构造评论URL
url="https://video.coral.qq.com/varticle/3059115503/comment/v2?callback=_varticle3059115503commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+cursor+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=9&_=1537970671964"
#循环抓取多个评论页面
for i in range(0,10):
    data=urllib.request.urlopen(url).read().decode()
    patnext='"last":"(.*?)",'
    #获取下一个Cursor
    nextcursor=re.compile(patnext).findall(data)[0]
    patcom='"content":"(.*?)",'
    comdata=re.compile(patcom).findall(data)
    #抓取评论信息
    for j in range(0,len(comdata)):
        print("------第"+str(i)+str(j)+"条评论内容是:")
        print(eval('u"'+comdata[j]+'"'))
    url="https://video.coral.qq.com/varticle/3059115503/comment/v2?callback=_varticle3059115503commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+nextcursor+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=9&_=1537970671964"

三、结果:

感谢韦玮老师的指导

猜你喜欢

转载自blog.csdn.net/Smart3S/article/details/82859863