B站这个超火的视频,弹幕都在说啥?

简介: B站这个超火的视频,弹幕都在说啥?

Hello 大家好,我是安哥。

最近 B 站上有一个超火且非常洗脑的视频《蜜雪冰城主题曲MV 中英双语版》,视频中原来的歌词是「你爱我,我爱你,蜜雪冰城甜蜜蜜」。

看到有些网友在弹幕中把它篡改成「你碍我,我碍你,你学编程天灭你」,哈哈哈哈哈。

b269a774939e85e4785b907b5a364293_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

为了弄清这些有趣的网友都在弹幕中说了啥,结合我之前学会的一点 Python 爬虫的知识,我用 Python 抓取了这个视频的所有弹幕,并将弹幕做成了如下的词云图

词云图会自动将比较长的弹幕拆分成单个的词汇,之后根据单个词汇出现的频率来决定字号的大小,字号越大,说明在弹幕中出现的频率越高

显而易见,出现次数最多的弹幕当属「哈哈哈哈哈哈」,即便长大了,听到这可爱的儿歌,看到这萌萌哒雪人,还是会觉得欢乐无穷。

20c333221bddd8bafbd24a37afa9fa42_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

看完上面的词云图,如果你想知道词云图是怎么生成的,可以继续看下面的文章。

我也将用到的源码放到了 GitHub 上,有需要的朋友可以前往 GitHub 下载或复制代码,跟着我一起「改代码」,之后就能随意抓取任意 B 站视频的弹幕了

da650d0ad829e950a5a4d48e8cdbf979_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

制作词云图的流程是这样的:先使用 dammu_spider.py 抓取视频的弹幕,得到一个包含所有弹幕的 txt 文件,再用 词云.py 将得到的 txt 文件导出为词云图


01. 安装 Python

打开 Python 官网,下载最新版的 Python3.9.5,它支持 Windows、macOS 和 Linux 系统。

c33c56b2d457892607d2975c405b0136_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

Python 官网地址:
https://www.python.org/downloads/

下载之后,打开 Python 安装程序,先勾选安装面板下方的「Add Python 3.x to PATH」,再点击「Install Now」,一直点下一步等待 Python 完成安装。

6f967d2f7b8dd8f10225871c564ec8a3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png图片来自网络

安装好 Python 之后,为了确认我们配置好了 Python 环境,可以按下 Win + S 打开 Windows 自带的搜索,输入 cmd,打开「命令提示符」。

5c2d8c6b41b7f622ff288beb784bb0b6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在打开的窗口中,输入 python 后按下回车,如果下方返回 Python 的版本号,例如我这里返回的版本号是 Python 3.9.2 ,则说明 Python 已经配置妥当了。

60320d6fcf7cb5d8299b8b722fc6b44a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


02. 安装 Python 开发工具

写 Python 代码有很多工具,如下图所示,这些工具被统称为 IDE,这是英文 Integrated Development Environment 的缩写,中文翻译为「集成开发环境」。

464cd13bcb123b14387f07f83b821efc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

目前我用过的开发工具有两个,一个是社区版的 PyCharm,一个是微软推出的 VS Code。

如果你贪图方便的话,可以使用 PyCharm,而如果你用的是 VS Code,还需要给 VS Code 安装一个名为「Python」的插件。

54e878ad6de4b37ef1037d91a1611cd0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

关于如何让 VS Code 的语言变成中文以及安装插件的问题,可以看之前我写过的一篇文章:

那些排版好看的公众号,都在偷偷用这些神器!


PyCharm 下载地址:https://www.jetbrains.com/pycharm/download/

VS Code 下载地址:https://code.visualstudio.com/


03. 安装第三方 Python 库

爬取 B 站弹幕的代码中,用到了 Python 没有内置的第三方库,为了不影响后续程序的运行,我们先安装一下这些第三方库:

  • requests
  • jieba
  • wordcloud


安装这些库也非常简单,先打开 Windows 自带的「命令提示符」窗口,如果你用的是 Mac 电脑,则打开 macOS 系统自带的「终端」。

在命令提示符窗口中分别输入 pip3 install + 第三方库的名称,例如安装 wordcloud 库,就输入 pip3 install wordcloud

559be0a882bea8015f883b8fd42950d9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

如果程序可以顺利安装的话,在末尾会提示「Successfully installed」,至于最末尾出现的黄色警告文字「WARNING」,它是警告信息而不是报错,可以忽略它们。

39d3e5a5cb04c950a4f7eec717c61d55_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

重复上面的操作,分别逐一安装三个第三方库 requests、jieba 和 wordcloud。

安装好第三方库之后,就可以开始修改代码啦。由于我在 Windows 电脑上用的 IDE 是 VS Code,下面就以 VS Code 来演示如何修改 Python 代码:


04. 修改抓取视频弹幕的代码

在 VS Code 中使用快捷键 Ctrl + N 新建一份文档,刚开始我们需要确定我们想使用的编程语言。

点击文档第一行的蓝色文字「选择语言」,在弹出的输入框中输入 Python,点击下方返回的 Python。

f90427144a0e79cf17f9b1b42c18fac5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

打开 GitHub 上的 danmu_spider.py 文件,用鼠标选中所有代码,右击选择「复制」。

8840a3168c50dd7a0dbb6aa351bfd5ef_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

将复制的代码粘贴到 VS Code 中,我们最先要更改的代码是 url 的值,这个 url 指向的是视频的弹幕地址

d7e21a8e65f3fbf89b875e57bac3e1b4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

打开你想抓取弹幕的 B 站视频,按下 F12 键,打开浏览器开发者工具,切换到 Network 选项卡,再点击视频右侧弹幕列表的「展开」按钮。

1ff65b71e814389f1f74d72551668679_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

拖动开发者工具右下角的滑钮,将其拖拽到底部,接着点击弹幕列表底部的「查看历史弹幕」,随意选择一个日期。

例如我选择查看 6 月 10 日的弹幕,下方的开发者工具,会新增一个后缀为 data=2020-06-10 的记录。

d350c23d88f1871fb05dd48962a2cd53_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

点击这条记录,在右侧展开的 General >> Request URL,就可以看到获取这一天的所有弹幕的链接地址,复制 Request URL 后面的 https 链接

83d985f37b30adb27a249599f96eef2c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

将其粘贴到 VS Code 中的 url 处,并将链接末尾的日期,替换为 {date},这是为了后面更灵活地指定抓取的弹幕所在的日期。

25396a3492f4346d23ffa3eed328b15f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

url 上方的 range(5,18) 就可以用来指定我们想抓取哪几天的弹幕,这里的 (5,18) 意思就是我想抓取蜜雪冰城视频,从 6 月 5 号到 6 月 18 号这段时间的所有视频弹幕。

492a7546836a7925a99f67e9f9e24236_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

至于你需要如何修改这两个参数,可以查看对应视频的历史弹幕小日历,来决定你要如何设置这两个参数。

e909465775897e94ae5d4519a6310eab_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着代码中要修改的参数是 cookie,这个参数记录了你的登录信息,因此只有在浏览器中登录自己的 B 站账号,才能找到这个我们需要的参数。

eec8cf0dd0426671b09c550b9c18e7d7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

cookie 同样可以在开发者工具面板中找到,在刚点开的 06-10 记录中,向下滑动右侧的滑动,就可以在 Request Headers 中看到 cookie 了。

1af19cf71ae69266689d4e6026cbaae5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

将 cookie 的值复制到 VS Code 中进行替换,原本有好几行的 cookie 值会变成一行:

12a99ef7d22dbae9a6e53f8ef4bff33d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里复制的 cookie 值还有一个小问题,cookie 值里面包含了一个英文的单引号,这在 Python 中会让程序误以为 cookie 值到这里就结束了,实际上并没有。

为了解决这个问题,我们需要在这个单引号的前面加一个反斜杠 \ ,通过转义的方式,让它变成一个普通的单引号

277d2dfff43a7755fb538cb55f9d17e3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着还需要修改一下保存抓取的弹幕的 txt 文件的名称,名称可以随你起,可以是中文,也可以是英文,记得名称末尾需要带上格式后缀 .txt

a95a7f3028c8340f89ba99893295b6d8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

修改好以上代码之后,右击鼠标,选择「在终端中运行 Python 文件」,Python 就会开始运行当前的代码。

a092af73a2e20b99d053e4a2f8e80764_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

运行程序没有报错、顺利的话,你就可以得到一个包含有多个弹幕的 txt 文件,这个文件位于 C 盘 >> 用户 >> 用户名 路径下。

0c1258c02334d8435fdc41ccdbd2fba4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

如果你在这个路径下找不到 txt 文件,可以使用 Windows 自带的搜索,以 txt 文件名进行搜索,应该就可以找到这个文件。


05. 修改导出词云图的代码

得到所有弹幕文本之后,我们还需要将得到的文本再作进一步的处理,才能得到最终想要的词云图。

同样在 VS Code 中新建一个文档,将 GitHub 上的 词云.py 的代码复制到文档中。

099ec8b9e56ad284a9644d5daf58fad1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

首先修改第 6 行的代码,这里需要替换成你在上一步抓取得到的弹幕 txt 文件的名称

6adc259d91e317f7f7f28087d6cf1848_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着来到第 25、26 行代码,这里需要设置导出的词云图所使用的字体,如果你用的是 Windows 系统,那么就使用第 25 行代码,将 26 行代码删除。

99ade76722713b6aa91c822664011b54_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

如果你的电脑系统是 macOS,那么就使用第 26 行代码,将字体设置为苹果系统自带的苹方字体

8fdcc95127c7baa2f34175af5f437a82_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

接着来到文档的最后一行代码,这里用来设置导出的词云图的名称,同样图片的名称可以随意设置,最后别忘了加上格式后缀 .png

66a0529e2b80babf04691e7afc493d98_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

修改好之后,同样右击鼠标,选择「在终端中运行 Python 文件」,运行修改好的 Python 程序。

0a707f855a41373ed4c00c9b1bc772c0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

程序运行完毕,和之前导出的弹幕文件相同路径下,即 C 盘 >> 用户 >> 用户名 路径,就可以看到导出的词云图了。

f081f264c9a0530939787036f5770cab_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

以上,就是使用 Python 抓取 B 站视频弹幕、并导出词云图的过程了,仅说明了如何修改现成的代码,如果要说清代码是如何写出的,那就要花费更多的功夫了。

本文的代码参考了一个视频和一篇文章,在此也一并列出,感兴趣的朋友可以去看一下:

[1] 【Python】爬取B站弹幕,看哪个弹幕更有梗?,https://www.bilibili.com/video/BV1UK4y137Ye

[2] Python爬取B站弹幕并制作词云图



以上就是本次想和你分享的内容。



相关文章
|
Linux 虚拟化 Windows
VirtualBox安装教程及使用(Windows)
VirtualBox安装教程及使用(Windows)
978 0
VirtualBox安装教程及使用(Windows)
|
JSON Java Linux
07-PDI(Kettle)源码编译8.2.0.0.R版本
文章目录 07-PDI(Kettle)源码编译8.2.0.0.R版本 1.安装PDI8.2.0.0.R的parent工程到本地 1.1配置Maven的settings.xml文件 1.2安装PDI源码依赖的parent工程到本地仓库
07-PDI(Kettle)源码编译8.2.0.0.R版本
|
5月前
|
存储 安全 数据安全/隐私保护
HashiCorp Vault 镜像拉取与 Docker 部署全指南
Vault是HashiCorp推出的企业级秘密管理工具,支持集中存储、细粒度访问控制、动态凭证生成与全链路审计。通过Docker部署可实现环境一致、安全隔离、快速迭代,适用于开发测试及生产环境,助力企业高效安全管理敏感信息。
380 3
|
缓存 Linux
centos yum的配置文件 repo文件详解
什么是repo文件?repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!YUM的工作原理并不复杂,每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装 哪些基础软件。
2896 0
|
6月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
11月前
|
JSON 前端开发 程序员
告别手动解析!借助 CodeBuddy 快速开发网页源码提取工具
这是一款基于 PyQt5 开发的网页源码解析工具,旨在解决查看网页源代码时功能不足的问题。工具支持加载网页源码、复制源码、解析 JSON 数据和链接、下载页面内容等功能,满足“查看、提取、保存”三大需求。通过不断迭代,增加了格式化 JSON、提取文章与图片链接、保存 HTML 文件等实用功能,为开发者提供高效便捷的源码解析体验。项目已开源,可前往 CNB 查看源码。
|
12月前
|
存储 弹性计算 缓存
阿里云服务器经济型e与通用算力型u1各自性能、适用场景解析与使用常见问题参考
在阿里云的众多云服务器实例类型中,经济型e和通用算力型u1实例凭借其高性价比和广泛的适用性,成为了众多用户的首选。这两款实例不仅满足了个人和中小企业用户的日常需求,同时也为大型企业级用户提供了灵活且经济的选择。本文将深入剖析这两款实例的性能特点、适用场景,并提供选择意见参考和常见问题解答,帮助用户更全面地了解并选择合适的云服务器实例。
441 12
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
存储 网络协议 安全
C语言 网络编程(五)Socket和端口
Socket 是 TCP/IP 五层网络模型中应用层的编程接口,用于实现不同主机间应用程序的双向通信。它作为网络通信的端点,连接应用层与网络协议栈,提供可靠的流式或非流式数据传输服务。Socket 包括流式(SOCKET_STREAM)、数据报(SOCK_DGRAM)和原始套接字(SOCK_RAW)三种类型,分别适用于不同场景。通过 IP 地址和端口号,Socket 能准确识别并转发数据包至指定进程。端口号分为知名端口(1-1023)、注册端口(1024-49151)和动态端口(49152-65535),确保数据准确交付。
|
SQL 开发框架 关系型数据库
值得推荐的.NET ORM框架
值得推荐的.NET ORM框架
404 0