查看原文
其他

芒果TV视频弹幕爬取之《我在他乡挺好的》

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:陈丹慧,中南财经政法大学金融学院

本文编辑:赵一帆

技术总编:王子一

Stata&Python云端课程来啦!

       为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

引言

引言

大家好,之前我们介绍过爱奇艺视频弹幕的爬取,但爱奇艺不是一家独大,有时候我们也想爬取其他视频网站弹幕。因此,以芒果tv最近的大热剧《我在他乡挺好的》为例,今天我们将手把手教大家爬取芒果tv视频弹幕。


01 获取视频弹幕

和爱奇艺视频类似,芒果TV视频的弹幕也是动态加载的。以第一集为例,按下F12打开浏览器开发者工具,点击"Network",在左上角的搜索框输入"bullet",再"Ctrl+R"刷新,随着视频的播放,每隔一分钟,就会出现一个新的json文件。如下图所示,将视频进度直接拉到50分钟处,就会出现一个50.json文件。

不断尝试发现,芒果tv的弹幕文件每集每隔一分钟出现一次,如第一集时长为71分21秒,从0.json到71.json共可获取72个弹幕文件。同一集的弹幕文件链接区别在于文件后缀前数字。(第一集的两个链接:https://bullet-ws.hitv.com/bullet/2021/08/24/144641/12664155/1.jsonhttps://bullet-ws.hitv.com/bullet/2021/08/24/144641/12664155/71.json不同集弹幕文件链接之间的区别在于日期后的两串数字,这两串数字标识不同集数。(如第12集的某个弹幕文件链接:https://bullet-ali.hitv.com/bullet/2021/08/24/151556/13052354/1.json)掌握链接规律后,就可以举一反三,提取全部视频弹幕了。注意:不同日期链接标识集数的后面两串数字是会变化的,本文以8月24日为例演示弹幕爬取,具体操作时请您以自己的网站链接为准。
02 获取弹幕信息

获取弹幕链接后,就可以提取相关信息了。在浏览器中打开文件链接,可以发现这是一个标准的json文件,如下图所示。我们需要提取两个重要信息,一是弹幕内容"content",二是该弹幕点赞数"v2_up_count"

具体程序如下:
import requestsimport jsonheaders={ #注意置换成您自己浏览器的request headers 'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"', 'Referer': 'https://www.mgtv.com/', 'sec-ch-ua-mobile': '?0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}#获取单集弹幕def get_bullet(num1,num2): all_comment=[] all_count=[] for i in range(75): url='https://bullet-ws.hitv.com/bullet/2021/08/24/%s/%s/%s.json'%(num1,num2,i) #此处以8月24日的链接为例 try: html=requests.get(url,headers=headers) #获取链接内容 result=html.json() #转换为字典格式 print("正在爬取本集第%s个弹幕文件"%i) for j in range(len(result["data"]["items"])): comment= result["data"]["items"][j]["content"] #评论 try: count=result["data"]["items"][j]["v2_up_count"] #点赞量 except: count=0 all_comment.append(comment) all_count.append(count) except: pass file='./我在他乡挺好的弹幕.txt' with open(file,"a",encoding="utf-8") as f: for comment,count in zip(all_comment,all_count): f.write('%s,%s\n'%(comment,count))#获取具体某集弹幕文件时,输入某集独特的num1和num2,执行get_bullet(num1,num2)即可
03 制作词云图
本文最终获取了接近28万条弹幕,制成的词云图如下所示:


在这28万条弹幕中,点赞TOP50的弹幕内容如下:

今天的推文就到这里了,快动手试试爬取你爱的电视剧弹幕吧!

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码








                


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐

        学Python还没搞清类和对象?或许你该进来看看 

        Stata中的判断神器——confirm命令

         cngdf——名义GDP与实际GDP之间的摆渡船

最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……

随机森林-Random Forest 

复原之神--preserve&restore

         合并,“纵”享新丝滑:frameappend & xframeappend
什么是全局配置项?|从零开始的Pyecharts(二)帮你拿下数据可视化|从零开始的Pyecharts 

Stata助力疫情打卡管理——是谁没有接龙呢?

这十年,《金融研究》的编委和读者偏爱哪些研究话题和文章?

【案例展示】Python与数据库交互

学好这一手,英语词典常在手 

玩转Stata中的数学函数

用spmap看中国空气质量

戳穿围城面具:安利&劝退一个专业

走进图文并茂的攻略世界 

玩转word文档“大变身”——wordconvert

数据读入|一文读懂用Stata读入不同类型的数据

简述递归

OpenCV库——轻松更换证件照背景色

800万年薪!还有谁?!

千古伤心词人,词伤几何?

去哪儿网攻略爬取——跟我一起去大理吧

"有你才有团"——Stata爬取王者荣耀英雄海报

爬虫实战|嚣张的徽州宴老板娘错在哪?

如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫

利用Python构建马科维茨有效边界

rangestat,让统计量灵活滚动起来!

听说这样做立项成功率更高哦

如何处理缺失值?这一篇搞定!

善用dataex命令,高效沟通你我他

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里

作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
中提出,只需支付少量赏金,我们会在后期的推文里给予解答。




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存