首页 » Python » python爬虫 » 采集b站全网站视频播放量

采集b站全网站视频播放量

 

采集b站全网站视频播放量原理:

因为b站的url都是比较有规律的,所以直接可以直接生成所有视频的url(大概700多万条),然后用火车头直接抓取播放数据就可以了。

采集b站全网站视频播放量所遇到的问题:

采集b站全网站视频播放量问题1:数据量太大,一个表格无法承担。采用多个表格组合的方式。
解决方法:一个csv可以存放100万的数据量,只需要7个就好。最后使用了70个txt保存并用spss来进行数据处理。
采集b站全网站视频播放量问题2:网址太多,火车头容易卡死
解决方法:分批次查询可以省掉部分时间,火车头速度太慢,准备尝试采用python的方式重新爬取,目前python的基础代码已经完成,10万数据大概2小时完成了。目前学习正则匹配中。预计140小时700万可以爬完。目前用了4台电脑一起爬中。最后写了个python脚本,70个脚本一起爬,半小时解决700万。。。
采集b站全网站视频播放量问题3:其中有很多网址是死的,浪费了不少时间 这部分数据量还在,不影响最终结果,不过对于根据时间分阶段的分析有影响,最后准备加入最新的评论时间作为依据。
采集b站全网站视频播放量问题4:源代码是找不到播放的那个数字的。
解决方法:①八爪鱼可以规避错误。
②找到数据调用的网址:http://interface.bilibili.com/player?id=cid:12105633&aid=视频id
③http://api.bilibili.com/archive_stat/stat?callback=jQuery17208382608660503101_1481317350054&aid=视频id&type=jsonp&_=1481317351086
采集b站全网站视频播放量问题5:一万网址入库要10分钟。800万要8000分钟大概133小时。速度太慢。
解决方法:网址利用云服务器生成,自己写的python脚本,大概1分钟生成800万url。远程生成省去了传输的时间,现在已开始爬了。ps:又发现一种方法。可以把url生成和爬取一起完成。发现最影响速度的竟然是b站的网速。。晕。
采集b站全网站视频播放量问题6:爬取超过10万数据,会因为timeout停止。
解决方法:爬70次呗。
采集b站全网站视频播放量问题7:有部分网页是做了301跳转的。这部分数据用了新的接口。爬的数据是错的。
解决方法:先剔除所有301的网页,然后这部分重新爬取。最后对比下总数看对不对。

最终爬出的结果(截止2016年12月14日)
播放量合计:40678379570
弹幕量合计:1331488510
评论数合计:137570069
收藏数合计:777505254
硬币数合计:260981712
分享数合计:72192945
弹幕率=弹幕/播放:3.27%
评论率=评论/播放:0.34%
收藏率=收藏/播放:1.91%
硬币率=硬币/播放:0.64%
分享率=分享/播放:0.18%

数据有些噪音没降:
1、番剧的数据接口换了,爬的是很老的数据量,简单对比了下,弹幕总量应该受到不小的影响,大概还能在提升几个百分比。
2、有部分视频已经被删了。但数据还在,所以这次得到的数据并不能很好的反映出b站现在人群的活跃度。如果想要比较精确的话,可以着手把评论时间比较新的视频筛出来。(数据接口已找到,哪天无聊用正则匹配了后会加上。)

原文链接:采集b站全网站视频播放量,转载请注明来源!

3