python 爬取腾讯视频评论的实现步骤


Posted in Python onFebruary 18, 2021

一、网址分析

查阅了网上的大部分资料,大概都是通过抓包获取。但是抓包有点麻烦,尝试了F12,也可以获取到评论。以电视剧《在一起》为例子。评论最底端有个查看更多评论猜测过去应该是 Ajax 的异步加载。
网上的大部分都是构建评论的网址,通过 requests 获取,正则表达式进行数据处理。本文也利用该方法进行数据处理,其实利用 scrapy 会更简单。
根据前辈给出的经验,顺利找到了评论所在的链接。

python 爬取腾讯视频评论的实现步骤

在新标签中打开,该网址的链接。

python 爬取腾讯视频评论的实现步骤

评论都在"content":"xxxxx"里面,所有可以通过正则表达式获取。
那么现在要开始构建网址,找到其规律。
在查找评论链接的过程中无意发现,点击影评旁边的评论总数,可以获取到更为干净的评论界面。结果是一样的。

python 爬取腾讯视频评论的实现步骤

既然是要爬取所有的评论,所以知道评论数是必不可少的。

python 爬取腾讯视频评论的实现步骤

再通过F12获取到评论链接,找到网址的规律,构建网址,加载三四个评论就行了。这里加载了四个网址。把所有网址复制到文本文件中,进行对比分析。

python 爬取腾讯视频评论的实现步骤

观察发现只有 cursor 和 source 进行了改变,其他是不变的,二 source 是在第一个的基础上进行加一操作,所以只需要获取到 cursor 即可。我们打开一个评论链接的网址,我们可以知道,cursor 其实是上一页 最后一个用户的ID码。所以我们只需要在爬取上一页的时候一起爬虫了。然后就可以构建网址。

python 爬取腾讯视频评论的实现步骤

二、代码编写

这个代码还是简单的。套用之前上课做的模板就可以直接进行爬虫了。
通过正则表达式获取评论,返回一个列表;
正则表达式获得的 cursor 码是列表,所以要转化为字符串使用;
source 很简单了,直接在上一个的基础上加一即可。

def getComment(html): # 爬取单页评论

 findeComment = re.compile(r'"content":"(.*?)"', re.S)
 comment = re.findall(findeComment, html)
 # print(comment)
 return comment

def getCursor(html): # 获取下一页的cursor码
 findeCursor = re.compile(r'"last":"(.*?)"', re.S)
 cursor = re.findall(findeCursor, html)[0]
 # print(cursor)
 return cursor


def getSource(source): # 获取下一页的source码
 source = int(source) + 1
 return str(source)

有点难度的可能就送弄代理吧,但是代理可以模仿网上其他人的写法,所以还是不是很难。

#添加用户代理

def ua(uapools):
 thisua = random.choice(uapools)
 # print(thisua)
 headers = ("User-Agent", thisua)
 opener = urllib.request.build_opener()
 opener.addheaders = [headers]
 # 设置为全局变量
 urllib.request.install_opener(opener)

三、遇到的问题

1. 获取评论的时候也将子评论爬虫进去了。

仔细查看了源码,发现评论主要在 data 下面的 oriCommList 列表里,其他范围的评论为子评论。个人认为子评论也算有效评论,目前不打算处理。

python 爬取腾讯视频评论的实现步骤

2. 获取全部评论数,直接通过 requests 获取不到

尝试了 xpath 和 requests 发现不能获取全部评论数,所以目前只能通过 selenium 获取,但是 selenium 效率太低了,就获取一个评论总数,还不如打开源码直接修改评论总数,所以暂时没有修改

3. 评论总数数据太大

因为之前爬虫过很多网站,同一个 user-agent 很容易被 ban ,所以目前构建了用户代理,然后进行随机。其实还想加一个 ip 代理的,但是使用了 ip 代理的网址,上面写的正常的 ip ,在使用的时候,拒绝连接。也尝试过构建代理池。但是代理池一般都是使用docker 和 Redis 进行获取。暂时没有选用,之选用了用户代理,然后在获取 headers 的时候加个 time.sleep(1)。目前还是正常的。

4. 报错'utf-8' codec can't decode byte 0xff in position 1: invalid start byte

遇到这个问题,实在无语,我怀疑后面的评论是新出的 emjoy,然后utf-8不能识别,程序挂掉了。但是选取其他格式,在解释的过程估计还会挂掉,就暂时爬到1万条吧。

python 爬取腾讯视频评论的实现步骤

四、完整代码

代码仓库

以上就是python 爬取腾讯视频评论的实现步骤的详细内容,更多关于python 爬取腾讯视频评论的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
python实现字符串加密成纯数字
Mar 19 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
浅谈Python中对象是如何被调用的
Apr 06 Python
Python之qq自动发消息的示例代码
Feb 18 #Python
Python对excel的基本操作方法
Feb 18 #Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 #Python
Python操作Excel的学习笔记
Feb 18 #Python
手把手教你用Django执行原生SQL的方法
Feb 18 #Python
python中封包建立过程实例
Feb 18 #Python
python解包用法详解
Feb 17 #Python
You might like
Codeigniter注册登录代码示例
2014/06/12 PHP
详解php中的implements 使用
2017/06/13 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
Python多线程编程简单介绍
2015/04/13 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
详解Python文本操作相关模块
2017/06/22 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Django密码存储策略分析
2020/01/09 Python
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
心理健康课教学反思
2014/02/13 职场文书
趣味比赛活动方案
2014/02/15 职场文书
综合实践活动总结
2014/05/05 职场文书
企业文化理念标语
2014/06/10 职场文书
毕业设计致谢词
2015/05/14 职场文书
医院见习总结
2015/06/24 职场文书
教师读书笔记
2015/06/29 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
JavaScript流程控制(循环)
2021/12/06 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript
Python数组变形的几种实现方法
2022/05/30 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技