Bootstrap

python b站弹幕分析_【python】B站弹幕数据分析及可视化(爬虫+数据挖掘)

成果展示

项目地址

爬取弹幕

可以看我之前写的这篇文章:10行代码下载B站弹幕

下载代码

# download.py

'''依赖模块

pip install requests

'''

import re

import requests

url = input('请输入B站视频链接: ')

res = requests.get(url)

cid = re.findall(r'"cid":(.*?),', res.text)[-1]

url = f'https://comment.bilibili.com/{cid}.xml'

res = requests.get(url)

with open(f'{cid}.xml', 'wb') as f:

f.write(res.content)

样例输入

样例输出

数据处理

下载弹幕文件51816463.xml后,我们打开看一下:

chat.bilibili.com

51816463

0

3000

0

0

k-v

长颈鹿呢?还是大象呢?(

我也不想的,实在是太大了呀

真是深不可测啊

此处省略很多字

可以看到xml文件中d标签的text部分就是弹幕的文本,而d标签的p属性应该是弹幕的相关参数,共有8个,用逗号分隔。

stime: 弹幕出现时间 (s)

mode: 弹幕类型 (< 7 时为普通弹幕)

size: 字号

color: 文字颜色

date: 发送时间戳

pool: 弹幕池ID

author: 发送者ID

dbid: 数据库记录ID(单调递增)

参数详解:

① stime(float):弹幕出现时间,单位是秒;也就是在几秒出现弹幕。

② mode(int):弹幕类型,有8种;小于8为普通弹幕,8是高级弹幕。

1~3:滚动弹幕

4:底端弹幕

6:顶端弹幕

7:逆向弹幕

8:高级弹幕

③ size(int):字号。

12:非常小

16:特小

18:小

25:中

36:大

45:很大

64:特别大

④ color(int):文字颜色;十进制表示的颜色。

⑤ data(int):弹幕发送时间戳。也就是从基准时间1970-1-1 08:00:00开始到发送时间的秒数。

⑥ pool(int):弹幕池ID。

0:普通池

1:字幕池

2:特殊池(高级弹幕专用)

⑦ author(str):发送者ID,用于"屏蔽此发送者的弹幕"的功能。

⑧ dbid(str):弹幕在数据库中的行ID,用于"历史弹幕"功能。

了解弹幕的参数后,我们就将弹幕信息保存为danmus.csv文件:

# processing.py

import re

with open('51816463.xml', encoding='utf-8') as f:

data = f.read()

comments = re.findall('(.*?)', data)

# print(len(comments)) # 300

;