用 Python 抓取 bilibili 弹幕并分析!

01 实现思路

首先,利用哔哩哔哩的弹幕接口,把数据保存到本地。接着,对数据进行分词。最后,做了评论的可视化。

02 弹幕数据

平常我们在看视频时,弹幕是出现在视频上的。实际上在网页中,弹幕是被隐藏在源代码中,以XML的数据格式进行加载的。

比如:

https://comment.bilibili.com/123072475.xml

一个固定的url地址 + 视频的cid + .xml

只要找到你想要的视频cid,替换这个url就可以爬取所有弹幕了(b站大部分网页给出的字幕限制是1000条)。

一个视频的cid在哪里呢?

右键网页,打开网页源代码,搜索 "cid": 就能找到:

03 保存数据到本地

有了数据的接口链接,我们就可以利用request模块,获取数据了。

然后,再利用xpath简单的解析xml,就可以把所有的弹幕信息汇总到一个列表里了。最后,把列表转化成dataframe,保存到本地。

# 许嵩新歌《雨幕》
# bilibili视频弹幕文件
url = 'https://comment.bilibili.com/123072475.xml'# 发送请求
response = requests.get(url)
xml = etree.fromstring(response.content)# 解析数据
dm = xml.xpath("/i/d/text()")
print(dm)  # list# 把列表转换成 dataframe
dm_df = pd.DataFrame(dm, columns=['弹幕内容'])
print(dm_df)# 存到本地
# 解决了中文乱码问题
dm_df.to_csv('雨幕-弹幕.csv', encoding='utf_8_sig')

保存的csv数据:

04 对数据进行分词

制作词云前,需要把弹幕数据进行分词。

关于jieba分词,可以参考:

https://blog.csdn.net/dnxbjyj/article/details/72854460

# jieba分词
dm_str = " ".join(dm)
words_list = jieba.lcut(dm_str)  # 切分的是字符串,返回的是列表
words_str = " ".join(words_list)

05 词云可视化

通过创建词云对象、设置词云参数,最终生成图片,保存到本地。

# 读取本地文件
backgroud_Image = plt.imread('1.jpg')# 创建词云
wc = WordCloud(background_color='white',mask=backgroud_Image,font_path='./SourceHanSerifCN-Medium.otf',  # 设置本地字体max_words=2000,max_font_size=100,min_font_size=10,color_func=random_color_func,random_state=50,
)word_cloud = wc.generate(words_str) # 产生词云
word_cloud.to_file("yumu.jpg") #保存图片

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13.Go 异常

1、宕机 Go语言的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、空指针引用等,这些运行时错误会引起宕机。 一般而言,当宕机发生时,程序会中断运行,并立即执行在该gorouti…

【AI辅助创作】商场中令对手胆颤的神秘杀手

进入21世纪,我们生活在一个被数据包围的世界。每天,无数的信息在互联网上流动,构成了所谓的“大数据”。在这个大数据时代,谁是真正的杀手?企业如何利用大数据来成功地了解和应对其竞争对手?这是我们今天要…

电路分析竟然这么简单?还可以用软件仿真~

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

C++八股学习心得.4

1.C 类 & 对象 C 在 C 语言的基础上增加了面向对象编程,C 支持面向对象程序设计。类是 C 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在…

一起offsetLeft值引发的样式错乱问题

问题描述: 首先我们来看一下正常样式和异常样式,正常样式的左侧菜单会正常显示出来,而异常样式的左侧菜单会被覆盖; 正常的样式: 异常的样式: 问题探索: 左边的间距其实跟通过读取最外层元素…

caj转换成pdf有哪些方法?

caj转换成pdf有哪些方法?PDF是一个被广泛支持的文件格式,这种格式基本上在所有的操作系统和设备上都是支持使用的,也能够将PDF文件打开和查看的,相比于caj文件,它就只能通过一下特定的软件或者是插件才能够将caj打开或…

C++ 实现对战AI五子棋

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 前言: 为了能够快速上手一门语言,我们往往在学习了基本语法后&#x…

gitlab 8.13.0 关闭注册功能

新版本基本都可以在网上找到关闭注册的教程,但是老版本会比较麻烦,可以通过如下路径在网页中设置(root 管理员登录) ​​​​​​http://ip:port/admin/application_settings 最后保存即可

python小工具之弱密码检测工具

一、引用的python模块 Crypto: Python中一个强大的加密模块,提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上,为Python程序员提供了简单易用的API,使其可以轻松地实现各种加密功能。 commands…

CAAC无人机操作证考证报名流程及白底证件照片制作方法

在这个无人机技术日新月异的时代,拥有一张CAAC民用无人机操作证不仅意味着你能够合法地在天空翱翔,也象征着你对飞行技术的尊重和对规章制度的遵守。如果你怀揣着成为无人机飞行员的梦想,那么,让我们一起揭开CAAC民用无人机操作证…

FFmpeg之——获取上传视频的尺寸(长、宽)

获取上传视频的尺寸: 获取视频尺寸通常需要借助第三方库FFmpeg。 首先,确保你的系统中已安装了FFmpeg,并且FFmpeg的可执行文件路径已经添加到你的系统环境变量中。 1.官网下载ffmpeg 进入 链接: ffmpeg官网 网址,点击下载wind…