B站用户行为分析非官方报告
上次,我们做了一个B站/知乎大V排名监控工具(Crossin:用python爬虫追踪知乎/B站大V排行)。
有读者问,这个初始数据是怎么获取的?我说是来自于一个分析项目的副产品。
这个项目就是今天给大家展示的内容:
关于 bilibili 上用户行为的统计分析
因为完成统计已经有一段时间了,所以数据并非新的实时数据。
本项目由我们的实训生兼助教 清风小筑 完成。
获取代码、数据、图片及说明文档见文末
数据来源
分析数据基于 bilibili 网站上的公开信息,主要采集了以下数据维度:
- 2016年~2019年5月,每月各分类视频发布数
- 2019年1~5月,播放量过1w视频的标签、播放数、发布时间
- 2019年1~5月,播放量过10w视频的弹幕数、评论数、收藏数
- 2019年1~5月,播放量过50w的作者粉丝数、播放总数、视频数
之所以其中选择了 1w、10w、50w 等门槛,是因为B站的视频实在太多了,且有些数据不在列表请求中,需逐个获取。出于研究学习的目标,我们没必要完整抓取所有信息,只针对相对受欢迎的视频进行分析。
相关数据量
2019年不到半年的视频发布量,已经占到了B站全站视频量的 1/4 以上,可见其近正进入高速增长时期。
以下分析,如无特殊注明均是针对2019年1~5月部分数据做出的统计。
历史趋势
视频发布量有一个比较明显的加速上涨趋势。另外,可以看出每年7、8月份都有一波小峰值,因为放假了……
周期规律
每日的视频发布量有比较明显的波动,如果你去看大图(已上传),会发现每一次波动都是一个星期。
如果我们按每周一~日来合并统计,就会得到:
周末的发布量明显高于工作日,而周五是发布的高峰。
发布量反映的是作者的行为,而弹幕量则能反映出观众的行为。
对2019年1~5月播放量前1w视频的弹幕发布时间进行了分析:
弹幕发布量同样呈现周期性,且比视频发布略滞后一天,峰值在周六周日。说明大家还是周末刷B站比较多。
我们将两个曲线归一化对比就比较明显了:
如果按每天的24小时进行合并统计,也会发现很明显的规律:
中午是小高峰,晚上是大高峰;
弹幕依旧滞后于视频
谁才是大佬?
对于播放量过50w视频的作者,做一个排序(非新数据):
粉丝数前20
视频播放总量前20
视频平均播放量前20
将视频总数/播放总量/粉丝数3个维度结合,综合成一张图表:
圈越大代表粉丝越多,越靠近左上说明效率越高(平均播放量高),越靠近右边说明UP主越勤劳。
因为B站上的“贫富分化”真的很明显,数据量跨度极大,所以这张图用了对数坐标。
特别看了下图上几个比较突出的点的详细数据:
UP主 - 发布视频数 - 播放总数 - 粉丝数
- 暴走漫画 - 65 - 9.73亿 466.61万
- 哔哩哔哩番剧 - 8382 - 112.89亿 - 78.42万
- TAKERA - 18665 - 2.49亿 - 32.14万
- 柚子木字幕组 - 10864 - 9.97亿 - 306.05万
什么内容受欢迎?
对于播放量过1w视频的标签,做了一些统计:
相关视频量前20
播放总量前20
平均播放量前20(只统计视频量>100的)
平均收藏前20(基于播放量过10w视频,标签相关视频量>100的)
这是一张针标签平均弹幕量和标签平均播放量的散点图:
总体来说,对于热门标签,播放量和弹幕量都会非常高;但一般标签,播放量和弹幕量的相关性并不是特别大。
把标签按视频总数、播放总量、全部评论量、全部弹幕量取00,绘制出词云:
如果把标准改成 平均播放量、平均评论量、平均弹幕量,则是:
看来有两位同志今年上半年很火啊!
全站标题高频词云:
高频弹幕词云:
关于项目的一些说明
- 使用了哔哩哔哩网页版的视频、作者信息、弹幕、热评 API 进行数据抓取
- 使用 MongoDB 存储数据。为了方便学习者使用,另转存了一份 JSON 格式数据可直接导入
- 开发环境:python3.7 / Windows / jupyter notebook
- 运行依赖包:
- requests
- matplotlib
- numpy
- pymongo
- pickle
- jieba
- wordcloud
抓取部分并无特别难度,在 github 项目页面,我们附上了具体的文档说明和代码注释。
如果你上个月参与了我们的爬虫学习小组,现在应该也可以参照代码顺利完成抓取部分的工作。
而关于数据可视化的内容,我们也很快会开展相关小组。请留意我们公众号和群里的通知。
获取项目代码、数据、图片及说明文档,请在公众号(Crossin的编程教室)里回复关键字: b站
------
一起学,走得远!
欢迎搜索:Crossin的编程教室
相关文章