1. 背景

在视频网站上,一边看视频一边发弹幕已经是网友的习惯。在B站上有很多种类的视频,也聚集了各种爱好的网友。本项目,就是对B站弹幕数据进行分析。选取分析的对象是B站上点播量过1.4亿的一部剧《Re:从零开始的异世界生活》

2.       算法

分两部分:

 第一部分:

2.1     在《Re:从零开始的异世界生活》的首页面,找到共25集的所有对应播放链接和剧名的格式,获取每一集的播放链接,并保存。

2.2     从每一集的播放页面中,通过正则re获取它的cid号,获得cid号后,就可用于获取弹幕文件。由于是动态页面,所以使用了selenium库的PhantomJS()方法。

2.3     因为b站需要通过格式为:https://comment.bilibili.com/dmroll,{time},{cid}的链接获取弹幕历史文件,所以要获取30天内的弹幕历史,就要计算出最近30天的时间戳。最后将组装好的url 保存到history_danmu_url.txt 文件。

2.4     当弹幕文件的url准备完成后,就可以通过静态页面的获取方法requests.get(url) 获取弹幕页面。所有的弹幕历史格式:<d p="533.67199707031,1,25,41194,1498943949,0,7edeebe9,3511616609">刀还是没有枪快</d>

2.5     p这个字段里面的内容:(资料来自百度搜索)

0,1,25,16777215,1312863760,0,eff85771,42759017中几个逗号分割的数据

第一个参数是弹幕出现的时间以秒数为单位。

第二个参数是弹幕的模式1..3 滚动弹幕 4底端弹幕 5顶端弹幕 6.逆向弹幕 7精准定位 8高级弹幕

第三个参数是字号, 12非常小,16特小,18,25,36,45很大,64特别大

第四个参数是字体的颜色HTML颜色的十进制为准

第五个参数是Unix格式的时间戳。基准时间为 1970-1-1 08:00:00

第六个参数是弹幕池 0普通池 1字幕池 2特殊池【目前特殊池为高级弹幕专用】

第七个参数是发送者的ID,用于“屏蔽此弹幕的发送者”功能

第八个参数是弹幕在弹幕数据库中rowID 用于“历史弹幕”功能。

2.6     逐个弹幕历史文件爬取,将内容一集的30天的弹幕历史,以['dtTime', 'danmu_model', 'font', 'rgb', 'stamp','danmu_chi', 'userID', 'rowID', 'message', 'episode'] 的格式保存到d1.csvd2.csvd3.csv……的文件中

2.7