Python爬虫--Ajax异步抓取腾讯视频评论

在某些网站 ,当我们滑下去的时候才会显示出后面的内容

就像淘宝一样,滑下去才逐渐显示其他商品

这个就是采用 Ajax 做的

然后我们现在就是要编写这样的爬虫。

规律分析:

这个时候就要用到我们的 Fiddler

我们需要分析加载评论的规律

首先使用火狐浏览器随便打开一个视频,注意设置好代理

然后打开 Fiddler 抓包 ,然后再点击查看更多评论,

拿魔道祖师演示吧,毕竟我也喜欢看

就是这个位置


然后查看 Fiddler

抓到的东西就很多杂七杂八的了,

有链接啊,图片什么的,这些显然不是评论


然后查看一个 js 文件 ,发现这就是我们想要的评论


然后把评论的 url 复制出来分析规律

右键点击 js 链接,然后再选择 Copy --> Just Url


如果一条分析不了,那么我们就多加载一两条看看

这样我们就有了三条做分析了


首先看这个地方,

这个应该是这部视频的 id 2850613872


接下来是评论 id

但是貌似 id 都不一样,我可以打开评论链接看看有没有规律


打开第一个评论链接,

然后发现第一个评论链接里的 last 6426734762166565246 正好是第二条评论链接里面的 id

然后查看其他的,发现依旧如此

然后我们就得到了一个结论,

就是第一条评论链接里面的 last id 等于 第二条评论链接里面的 id


发现评论 id 的规律后,

接下来就是评论了

评论内容在 content 里面


后面这个字符串的话

前十位是时间戳,后面三位没有发现有啥规律

太菜了我

推测可能是评论数

不过有没有这个字符串短时间内不影响我们获取评论内容

这个感觉就是一个时间限制,在一定时间内有效


只抓取一页的评论:

知道规律后

可以试试抓取评论内容

接下来我们尝试只抓取一个链接里面的内容

代码:

复制代码
import urllib.request
import re
import time

headers = (

	"User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"

	)

opener = urllib.request.build_opener()

opener.addheaders = [headers]

urllib.request.install_opener(opener)

video_id = "2850613872"

comment_id = "6422202556761345058"

url = "https://video.coral.qq.com/varticle/"+video_id+"/comment/v2?callback=_varticle2850613872commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+comment_id+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1566709851532"

path = '"content":"(.*?)",'

data = urllib.request.urlopen(url).read().decode("utf-8")

resut = re.compile(path).findall(data)

print(resut)

然后就获取到了一页的评论 😂😂 ❤❤ 🙃🙃 (눈_눈)(눈_눈)

😡😡 😊😊 😄😄 🤣🤣 😒😒 🤬🤬 😘😘


自动抓取全部评论:

接下来就要抓取全部评论了

思路:

获取 last id 作为下一次链接的评论 id

代码:

复制代码
import urllib.request
import re
import time

try:

	headers = (

	"User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"

	)

	opener = urllib.request.build_opener()

	opener.addheaders = [headers]

	urllib.request.install_opener(opener)

	video_id = "2850613872"  #  视频 id

	comment_id = "6422202556761345058"  #  初始评论 id

	for i in range(1,6):

		print("第"+str(i)+"页")

		url = "https://video.coral.qq.com/varticle/"+video_id+"/comment/v2?callback=_varticle2850613872commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+str(comment_id)+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=132&_=1566709851532"

		content_path = '"content":"(.*?)",'  #  评论内容正则

		last_path = '"last":"(.*?)",'  #  last id 正则

		content_data = urllib.request.urlopen(url).read().decode("utf-8")

		content = re.compile(content_path).findall(content_data)  #  获取评论

		last_id = re.compile(last_path).findall(content_data)  # 获取 last id

		for j in last_id:  #  获取的 last id 是列表类型,要进行类型转换

			comment_id = j

		# print(comment_id)

		print(content)  #  输出获取的评论

except Exception as error:

	print(error)

然后成功获取到评论

运行截图

相关推荐
xiao5kou4chang6kai44 分钟前
【Python-GEE】如何利用Landsat时间序列影像通过调和回归方法提取农作物特征并进行分类
python·gee·森林监测·洪涝灾害·干旱评估·植被变化
kaikaile19957 分钟前
使用Python进行数据可视化的初学者指南
开发语言·python·信息可视化
Par@ish8 分钟前
【网络安全】恶意 Python 包“psslib”仿冒 passlib,可导致 Windows 系统关闭
windows·python·web安全
意疏18 分钟前
【Python篇】PyCharm 安装与基础配置指南
开发语言·python·pycharm
冬天给予的预感2 小时前
DAY 54 Inception网络及其思考
网络·python·深度学习
钢铁男儿2 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
亿牛云爬虫专家6 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
蹦蹦跳跳真可爱58910 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij10 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien11 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt