本文介绍了抓包分析工具Fiddler的使用,以及用这个工具来辅助分析抓取腾讯视频评论数据的实战。
Python3 基础教程最全总结
Python3 进阶教程最全总结
一文掌握Python基础知识
一文掌握Python列表/元组/字典/集合
一文掌握Python函数用法
Python面向对象之类与对象详解
Python面向对象之装饰器与封装详解
Python面向对象之继承和多态详解
Python异常处理和模块详解
Python文件(I/O)操作详解
Python网络编程之Socket原理与基本用法
Python多线程threading模块基本用法
Python爬虫正则表达式详解 爬爬爬爬个虫子
Python爬虫实战Urllib抓取段子
Python爬虫实战抓包分析视频评论
Python爬虫实战Requests抓取博客文章
Python爬虫实战Scrapy抓取商品信息并写入数据库
抓包分析工具:Fiddler;下载比较慢,先下载着,本文会用到。官方下载地址。
准备两个浏览器:推荐Chrome、火狐;主要是跟日常使用的分开,然后新下载的浏览器与Fiddler配合使用,需要修改浏览器的网络代理。如果你常用的浏览器不是这两个中的,那么只需要下载一个就可以。
以火狐为例,配置。
在搜索结果中点击网络设置,进行如下配置:
因为大多数网站都是https协议的,所以需要在Fiddler配置Https协议,配置步骤如下:
设置端口号,说明:这是系统默认的浏览器端口号,可以把这个端口号自己重新设置一个,但是要注意火狐浏览器里的端口号也得设置同样的端口号。如果不一致的话,Fiddler监听不到数据。
导出证书:
在源码模式下,搜一下评论的内容,发现搜不到,说明内容隐藏了,或者说转换成其他编码格式(比如“utf-8”)了。
回到正常的模式查看评论的翻页方式,可以看到翻页方式是动态加载的方式,点击“加载更多评论”时,注意看地址栏没有变化,因此需要使用抓包分析工具,来获取加载更多评论的字段。如下图:
经过以上分析可知,评论内容是其他编码格式的,加载更多评论并不是传统的翻页方式,而是动态获取。那么我们使用Fiddler进行分析。
首先将要爬取评论的页面,用浏览器打开,然后打开Fiddler,在控制台(左下角)输入clear
清理掉抓取的信息,方便分析。
往下翻评论,翻到“查看更多评论”点击,继续翻,翻三五次就行。然后查看Fiddler的抓包信息,找到图标是 js 的,按照如下操作:
经过对比,我们发现url中,只有cursor字段是发生变化的,因为是动态获取,所以可以推断下一次“查看更多评论”的cursor字段一定可以自动生成,我们重新回到Fiddler,来验证我们的想法。
找到对应的url,然后在右下角搜索 cursor字段的数字,可以发现在header中的确存在该字段,并且字段的键是last
,可知这个 last
就是我们要找的字段,如果看文字不好理解,流程如下图所示:
然后把复制的url 粘贴到word文档中,继续查看第二页和第三页的评论的url:
做同样的操作,我们可以得到三个不同的url(针对不同的三页评论):
通过观察,可以发现三个url只有cursor字段不同,我们猜想是由前叶自动生成后一页的这个字段,为了验证我们的猜想,回到Fiddler中,做如下操作:
接下来,我们在浏览器中打开第一页评论url的网址:
可以看到content字段中,包含了评论的内容。
由以上分析,我们可以写爬虫程序了,完整代码如下。
from urllib import request
import re
content_cursor = "6408214507379208458" #第一页评论数据的cursor
total_page = 6
for i in range(0,total_page):
print(f"第{str(i+1)}页的评论为:")
url = "https://video.coral.qq.com/varticle/1002323636/comment/v2?callback=_varticle1002323636commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+str(content_cursor)+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1586005285727"
data = request.urlopen(url).read().decode("utf-8","ignore")
pat_start = '"content":"(.*?)"' #正则表达式
comment = re.compile(pat_start, re.S).findall(data)
for item in comment:
print(str(item))
#print(eval('u"'+str(item)+'"'))
print("------")
pat_next = '"last":"(.*?)"'
content_cursor = re.compile(pat_next, re.S).findall(data)[0] #更新cursor
输出:
第1页的评论为:
喜欢长野博扮演的大古,帅帅哒[微笑][微笑][微笑]
------
我小时候最爱的盖亚奥特曼里的阿古茹,盖亚奥特曼里有中国神兽
------
迪迦奥特曼空中形态
------
有谁是看了内涵再来刷一遍童年回忆的
------
不论剧情好坏,我来看迪迦奥特曼是一种情怀。童年的回忆。
------
我❤️看迪迦有好几点呢!1.剧情新颖,有强烈的现代感2.人物有鲜明的性格
------
迪迦奥特曼生气了
------
------
谁跟我一样,都二十几岁的人了又来看一遍
------
迪迦奥特曼,我知道你的光线技能的样子是什么样子。
------
的确,迪加是我看过剧情最好的奥特曼,不幼稚,而且适合多年龄段的人,而且主题曲也好听
------
不管看哪个奥特曼,还是觉得迪迦看不过瘾
------
喜欢迪加给我个赞
------
最强的是赛罗
------
小的时候大古真的是我的爱豆,觉得他长得好帅啊
------
我卡夫卡把你布局好看的东西放下来了?我想雨天啊、我的心就有很多美好愿望清单中了你想什么都要知道是你说出来什么都u不知道为什么这么早起来去上班呀……我的生活真的不是滋味……在乎别人迪迦奥特曼好厉害呀。
------
这是第几 集?
------
没人吗?给我说一下吗?
------
91路过
------
23。重拾童年的回忆。
------
天王盖地虎!
------
可惜玩不内涵了
------
《
------
哦加的
------
迪迦是目前所有奥特曼里剧情最好的,并且好多内容有深刻的内涵,可以说这部剧并不是给小孩子看的,更适合大人看
------
单纯陪我小表弟看,
------
火
------
弱爆了。
------
411111111222
------
111家里人
------
第2页的评论为:
迪迦奥特曼的收视绿9.3分是奥特曼里的收视绿最高
------
邪恶的奥特曼居然打一只可爱的小狗,丽哪却很担心小狗
------
我又来啦
------
迪迦最厉害 我最喜欢迪迦 尤其是闪耀迪迦
------
迪迦好像是国漫,对不。
------
大古的帅
------
年轻医生的笔记 中国梦之声 火之女神 马普尔小姐 火炬木小组 飞天大盗马普尔小姐 火炬木小组 飞天大盗 年轻医生的笔记 中国梦之声 火之女神
------
让巨人复苏的方法就是把大古熬成汤。
------
重新在看一次回忆的时光
------
《迪迦》我的童年男神(大古)
------
天
------
帅
------
诺亚才厉害还有奥特之王,赛迦雷杰多
------
小学生
------
迪迦奥特曼第四十四集 连影 假迪迦、盖迪登场\n是个真粉吧?
------
奥特愚!
------
有意思!
------
+1
------
把大古变成汤
------
大骨熬成汤
------
日语哪来的
------
我想问为什么你的清晰度这么高!
------
(v yv 他尴尬海洋馆
------
迪迦曼
------
果然幹活然後好好好
------
满满的回忆
------
迪迦是日本拍的,他是第一部传入中国的奥特曼,影响了一代人,所以国人都喜欢迪迦。
------
是唯一一部在中国独立更新播放的,特摄片
------
呵呵,说的真实,我第一反应就是奈克瑟斯
------
绿nm
------
第3页的评论为:
为啥会忽然看起来这个
------
嗯,好久都没有看过了
------
再来看一遍!!!!哈哈哈
------
------
现在好多人都模仿你的奥特曼
------
真正的迪迦奥特曼
------
迪迦奥特曼复活了
------
告诉你们哦 迪迦是在圆谷公司资金不足的时候拍的
------
丽娜好可爱,我能抱走吗
------
小时候的最爱,最爱❤️
更多实战,下文介绍~
参考:
相关课程:https://edu.aliyun.com/course/1994