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

news2024/11/19 6:47:35

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

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

这个就是采用 Ajax 做的

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

规律分析:

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

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

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

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

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

就是这个位置

images


然后查看 Fiddler

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

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

images


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

images


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

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

images


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

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

images


首先看这个地方,

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

images


接下来是评论 id

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

images


打开第一个评论链接,

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

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

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

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

images


发现评论 id 的规律后,

接下来就是评论了

评论内容在 content 里面

images


后面这个字符串的话

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

太菜了我

推测可能是评论数

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

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

images


只抓取一页的评论:

知道规律后

可以试试抓取评论内容

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

代码:


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)

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

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

images


自动抓取全部评论:

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

思路:

获取 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)

然后成功获取到评论

运行截图

images

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【原创】向量加权平均算法优化的长短期记忆神经网络自注意力神经网络(INFO-LSTM-SelfAttention)的回归预测

INFO-LSTM-SelfAttention是一种用于回归预测的神经网络模型,结合了长短期记忆(LSTM)神经网络、自注意力机制和向量加权平均算法。下面详细介绍这个模型在回归预测任务中的工作流程: 1. 数据预处理 输入数据:时序数据序…

微信小程序[黑马笔记]

简介 常用组件 视图组件 <!--pages/list/list.wxml--><scroll-view class"container1" scroll-y><view>A</view><view>B</view><view>A</view></scroll-view><!--pages/list2/list.wxml--><swiper …

终端安全管理软件哪个好?

终端安全管理软件是保障企业信息安全的重要工具。 它们能够有效地防范恶意软件、黑客攻击和其他安全威胁&#xff0c;并提供多方面的终端设备安全保护措施。 终端安全软件的功能和保护机制各不相同&#xff0c;这就需要企业根据自身的需求和情况来进行评估和选择。 下面总结了…

(七)Servlet教程——Idea编辑器集成Tomcat

1. 点击桌面上Idea快捷方式打开Idea编辑器&#xff0c;假如没有创建项目的话打开Idea编辑器后的界面展示如下图所示 2. 点击界面左侧菜单中的自定义 3. 然后点击界面中的“所有设置...”,然后点击“构建、执行、部署”&#xff0c;选择其中的“应用程序服务器” 4. 点击“”按钮…

visual studio2022,开发CMake项目添加rabbitmq库,连接到远程计算机并进行开发于调试

1.打开visual studio installer 。安装“用于 Windows 的 C CMake 工具” 2.新建CMake项目 3.点击VS的“工具”—>"选项“—>“跨平台”—>”连接管理器“,添加远程计算机。用来将VS编辑的代码传到服务器进行编译–连接—运行&#xff08;调试&#xff09;。 …

ElasticSearch教程入门到精通——第二部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第二部分&#xff08;基于ELK技术栈elasticsearch 7.x8.x新特性&#xff09; 1. JavaAPI-环境准备1.1 新建Maven工程——添加依赖1.2 HelloElasticsearch 2. 索引2.1 索引——创建2.2 索引——查询2.3 索引——删除 3. 文档3.1 文档——重构3.2…

2-Qt Designer(界面设计师)的简单使用

文章目录 前言一、打开Qt Designer二、创建具体ui界面三、保存ui文件四、导入ui文件生成界面实现功能补充总结前言 Qt Designer(界面设计师)可以方便我们图形画界面设计界面的布局,不用再一遍又一遍手动调窗口宽高,位置等参数,极大的节省了我们的工作效率。下面是一个简单…

PotatoPie 4.0 实验教程(24) —— FPGA实现摄像头图像中心差分变换

为什么要对图像进行中心差分变换&#xff1f; 对图像进行中心差分变换的主要目的是计算图像中每个像素点的梯度。梯度在图像处理中是一个非常重要的概念&#xff0c;它可以用来描述图像中灰度变化的快慢和方向&#xff0c;常用于边缘检测、特征提取和图像增强等任务中。 具体…

eclipse 如何创建python文件

一、准备 1.平台要求&#xff1a; 电脑除了要安装eclipse软件和Python语言包之外&#xff0c;还需要将Python集成到eclipse软件中&#xff0c;网上有很多的方法&#xff0c;这里就不细细介绍如何集成了。 在下面界面中可以看到自己已经安装了继承插件。具体方法见步骤2&…

Windows vs2017编译net-snmp

呜呜呜呜呜呜~~~&#xff0c;我太菜了&#xff0c;编了一天&#xff01;&#xff01;&#xff01; 把下面的代码跑起来 #include <iostream> #include <WinSock2.h> #define __STDC_LIMIT_MACROS // 添加宏定义 #include <net-snmp/net-snmp-config.h> #in…

Gateway服务网关!!!

一、为什么需要服务网关&#xff1a; 两大特性&#xff1a;高可用和高性能 1、高性能&#xff1a;采用异步的方式调用服务。 2、高可用 二、网关包含三大属性&#xff1a; 三、基本配置 <dependency><groupId>org.springframework.boot</groupId><artif…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…

WebSocket 深入浅出

WebSocket 深入浅出 1. WebSocket 是什么2. WebSocket 建立连接通信的过程3. WebSocket 和http的联系与区别4. WebSocket 的使用场景及限制 1. WebSocket 是什么 定义&#xff1a;WebSocket 是一种网络通信协议&#xff0c;它允许在单个TCP连接上进行全双工通信。是HTML5规范提…

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

Root Motion动画与普通动画的区别 普通动画&#xff1a;动画文件里记录的是物体的绝对坐标和方向&#xff0c;在播放动画时&#xff0c;Unity会根据Animation中记录的值&#xff0c;直接修改游戏对象的坐标和方向&#xff0c;每一帧的坐标和方向都是通过插值计算得出来的&…

【Docker】Docker 实践(三):使用 Dockerfile 文件构建镜像

Docker 实践&#xff08;三&#xff09;&#xff1a;使用 Dockerfile 文件构建镜像 1.使用 Dockerfile 文件构建镜像2.Dockerfile 文件详解 1.使用 Dockerfile 文件构建镜像 Dockerfile 是一个文本文件&#xff0c;其中包含了一条条的指令&#xff0c;每一条指令都用于构建镜像…

R语言高级数据管理

一&#xff0c;数学函数 绝对值函数abs(x) sqrt(x) 开平方根 不小于某个数的最小整数ceiling(x) 不大于某个数的最大整数floor(x) 四舍五入round(x) sin(x) cos(x) log(x) 二&#xff0c;统计函数 求平均值 > x<-c(2,3,4,5,6,7,8,9,10) > mean(x) 求和 &g…

数学视角下的编程艺术:深入线性代数学习与应用

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

C#调用skiasharp实现绘制并拖拽图形

SkiaSharp是基于.net的跨平台二维图形库&#xff0c;封装的谷歌的Skia库&#xff0c;SkiaSharp支持在以下平台或运行时中使用&#xff0c;能够在图片中绘图&#xff0c;也提供控件在Winform、WPF等使用。本文学习skiasharp在Winform的基本用法&#xff0c;并参照参考文献5实现绘…

数据集笔记:geolife staypoint聚合的location 最近的10个其他location

数据集&#xff1a;处理geolife数据-CSDN博客 这边的stations&#xff0c;找到每个station 最近的其他10个station 1 读取数据 假设已经读完了&#xff0c;就是locations 2 保留有用的列 locations.drop([center,user_id],axis1,inplaceTrue) locations 3 加载几何形状 使用…

安装配置Maven(idea里面配置)

放在这个路径下&#xff08;如果需要可以免费发给你&#xff0c;dd我就好了&#xff09; D:\IearnSoftware\maven\apache-maven-3.6.1-bin.zip&#xff08;我自己的路径下面&#xff0c;防止忘记&#xff09; 1.首先测试maven在不在&#xff0c;配置对不对 mvn -v 这样就是成…