Skip to main content
 Web开发网 » 编程语言 » Python语言

用Python爬取六大平台的弹幕、评论,看这一篇就够了

2021年11月29日7820百度已收录

今天讲解如何用python爬取芒果TV、腾讯视频、B站、爱奇艺、知乎、微博这几个常见常用的影视、舆论平台的弹幕和评论,这类爬虫得到的结果一般用于娱乐、舆情分析,如:新出一部火爆的电影,爬取弹幕评论分析他为什么这么火;微博又出大瓜,爬取底下评论看看网友怎么说,等等这娱乐性分析。

本文爬取一共六个平台,十个爬虫案例,如果只对个别案例感兴趣的可以根据:芒果TV、腾讯视频、B站、爱奇艺、知乎、微博这一顺序进行拉取观看。完整的实战源码已在文中,我们废话不多说,下面开始操作!

芒果TV本文以爬取电影《悬崖之上》为例,讲解如何爬取芒果TV视频的弹幕和评论!

网页地址:

弹幕

分析网页弹幕数据所在的文件是动态加载的,需要进入浏览器的开发者工具进行抓包,得到弹幕数据所在的真实url。当视频播放一分钟它就会更新一个json数据包,里面包含我们需要的弹幕数据。

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第1张

得到的真实url:

条数据包。

实战代码import requestsimport pandas as pdheaders = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}df = pd.DataFrame()for e in range(0, 121): print(f'正在爬取第{e}页') resposen = requests.get(f')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第2张

评论

分析网页芒果TV视频的评论需要拉取到网页下面进行查看。评论数据所在的文件依然是动态加载的,进入开发者工具,按下列步骤进行抓包:Network→js,最后点击查看更多评论。

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第3张

加载出来的依然是js文件,里面包含评论数据。得到的真实url:

:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第4张

实战代码import requestsimport pandas as pdheaders = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}df = pd.DataFrame()for o in range(1, 170): url = f')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第5张

腾讯视频本文以爬取电影《革命者》为例,讲解如何爬取腾讯视频的弹幕和评论!

网页地址:

弹幕

分析网页依然进入浏览器的开发者工具进行抓包,当视频播放30秒它就会更新一个json数据包,里面包含我们需要的弹幕数据。

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第6张

得到真实url:

实战代码import pandas as pdimport timeimport requestsheaders = { 'User-Agent': 'Googlebot'}# 初始为15,7245 为视频秒长,链接以三十秒递增df = pd.DataFrame()for i in range(15, 7245, 30): url = ")结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第7张

评论

分析网页腾讯视频评论数据在网页底部,依然是动态加载的,需要按下列步骤进入开发者工具进行抓包:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第8张

点击查看更多评论后,得到的数据包含有我们需要的评论数据,得到的真实url:

url中的参数callback以及_删除即可。重要的是参数cursor,第一条url参数cursor是等于0的,第二条url才出现,所以要查找cursor参数是怎么出现的。经过我的观察,cursor参数其实是上一条url的last参数:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第9张

实战代码import requestsimport pandas as pdimport timeimport randomheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}df = pd.DataFrame()a = 1# 此处必须设定循环次数,否则会无限重复爬取# 281为参照数据包中的oritotal,数据包中一共10条数据,循环280次得到2800条数据,但不包括底下回复的评论# 数据包中的commentnum,是包括回复的评论数据的总数,而数据包都包含10条评论数据和底下的回复的评论数据,所以只需要把2800除以10取整数+1即可!while a < 281: if a == 1: url = ')效果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第10张

B站本文以爬取视频《“ 这是我见过最拽的一届中国队奥运冠军”》为例,讲解如何爬取B站视频的弹幕和评论!

网页地址:

弹幕

分析网页B站视频的弹幕不像腾讯视频那样,播放视频就会触发弹幕数据包,他需要点击网页右侧的弹幕列表行的展开,然后点击查看历史弹幕获得视频弹幕开始日到截至日链接:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第11张

链接末尾以oid以及开始日期来构成弹幕日期url:

在上面的的基础之上,点击任一有效日期即可获得这一日期的弹幕数据包,里面的内容目前是看不懂的,之所以确定它为弹幕数据包,是因为点击了日期他才加载出来,且链接与前面的链接具有相关性:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第12张

得到的url:

格式

实战代码import requestsimport pandas as pdimport redef data_resposen(url): headers = { "cookie": "你的cookie", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36" } resposen = requests.get(url, headers=headers) return resposendef main(oid, month): df = pd.DataFrame() url = f')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第13张

评论

分析网页B站视频的评论内容在网页下方,进入浏览器的开发者工具后,只需要向下拉取即可加载出数据包:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第14张

得到真实url:

格式。

实战代码import requestsimport pandas as pddf = pd.DataFrame()headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'}try: a = 1 while True: if a == 1: # 删除不必要参数得到的第一条url url = f')结果展示,获取的内容不包括二级评论,如果需要,可自行爬取,操作步骤差不多:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第15张

爱奇艺本文以爬取电影《哥斯拉大战金刚》为例,讲解如何爬爱奇艺视频的弹幕和评论!

网页地址:

弹幕

分析网页爱奇艺视频的弹幕依然是要进入开发者工具进行抓包,得到一个br压缩文件,点击可以直接下载,里面的内容是二进制数据,视频每播放一分钟,就加载一条数据包:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第16张

得到url,两条url差别在于递增的数字,60为视频每60秒更新一次数据包:

进行解码时,会报以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 52: invalid start byte在解码中加入ignore,中文不会乱码,但html格式出现乱码,数据提取依然很难:

decode("utf-8", "ignore")用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第17张

小刀被编码弄到头疼,如果有兴趣的小伙伴可以对上面的内容继续研究,本文就不在进行深入。所以本文采用另一个方法,对得到url进行修改成以下链接而获得.z压缩文件:

为数。

实战代码import requestsimport pandas as pdfrom lxml import etreefrom zlib import decompress # 解压df = pd.DataFrame()for i in range(1, 23): url = f')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第18张

评论

分析网页爱奇艺视频的评论在网页下方,依然是动态加载的内容,需要进入浏览器的开发者工具进行抓包,当网页下拉取时,会加载一条数据包,里面包含评论数据:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第19张

得到的真实url:

:

格式。

实战代码import requestsimport pandas as pdimport timeimport randomheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}df = pd.DataFrame()try: a = 0 while True: if a == 0: url = ')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第20张

知乎本文以爬取知乎热点话题《如何看待网传腾讯实习生向腾讯高层提出建议颁布拒绝陪酒相关条令?》为例,讲解如爬取知乎回答!

网页地址:

分析网页经过查看网页源代码等方式,确定该网页回答内容为动态加载的,需要进入浏览器的开发者工具进行抓包。进入Noetwork→XHR,用鼠标在网页向下拉取,得到我们需要的数据包:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第21张

得到的真实url:

格式。

实战代码import requestsimport pandas as pdimport reimport timeimport randomdf = pd.DataFrame()headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}for page in range(0, 1360, 5): url = f')结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第22张

微博本文以爬取微博热搜《霍尊手写道歉信》为例,讲解如何爬取微博评论!

网页地址:

分析网页微博评论是动态加载的,进入浏览器的开发者工具后,在网页上向下拉取会得到我们需要的数据包:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第23张

得到真实url:

两条url区别很明显,首条url是没有参数max_id的,第二条开始max_id才出现,而max_id其实是前一条数据包中的max_id:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第24张

但有个需要注意的是参数max_id_type,它其实也是会变化的,所以我们需要从数据包中获取max_id_type:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第25张

实战代码import reimport requestsimport pandas as pdimport timeimport randomdf = pd.DataFrame()try:a = 1while True:header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36'}resposen = requests.get(')

结果展示:

用Python爬取六大平台的弹幕、评论,看这一篇就够了  python平台 第26张

以上便是今天的全部内容了,如果你喜欢今天的内容,希望你能在下方点个赞和在看支持我,谢谢!

评论列表暂无评论
发表评论
微信