最近对b站的弹幕很感兴趣,想爬下来分析点数据,废话不多说首先我们打开某个b站的视频,然后F12 切换到浏览器控制台。选择NetWork->检索弹幕源文件(弹幕资源文件xml格式)


具体弹幕格式内容可参考[1]
然后获取到它对应的url,很轻松的就可以获取到视频的弹幕了。



但是,视频的url和弹幕的url并没有太大联系,ctrl+U 查看代码发现cid这一项与弹幕对应。


那么这就很容易做了。但是怎么大规模的爬去弹幕,我从热门推荐中找,因为热门视频中的弹幕数肯定不少,对于弹幕分析有帮助。

  现在在通过源代码的方式不太可行了,b站网页是动态加载的,因此要么用浏览器的方法解析当前页面的字段然后进行提取,还有就是找到动态加载所请求的API ,同样F12 ,因为AJAX技术通过XHR请求的,查看一下XHR栏中的资源,截图中标记的那一项传过的参数提取出来是一段json字符串,分析这正是当前所看到热门视频中所有信息。

接下来分析具体的字段,result中的每一项是当前页面中每个视频的具体信息,我们用到的也就是arcurl这一项了。

  这只是某一栏中的热门信息,那其他栏中的热门信息又是通过什么控制的呢。查看该资源的url发现
比对不同热门资源的url就会发现。cate_id代表不同的栏目,具体怎么获取到所有b站的cate_id没有继续深入研究下去,自己可以手动的按照上面的方式查看cate_id。
1
http://s.search.bilibili.com/cate/search?main_ver=v3&search_type=video&view_type=hot_rank&pic_size=160x100&order=click&copy_right=-1&cate_id=168&page=1&pagesize=20&time_from=20170816&time_to=20170823


有了上面的思路,整个思路就清晰了,最终整个流程有如下表示:

具体代码见:https://github.com/Tecmus/BarrageSpider

参考

[1]:B站弹幕格式&历史弹幕获取分析 http://ju.outofmemory.cn/entry/146571