背景
我是一个骑行爱好者,平时通勤工具主要是自行车,周末偶尔也会骑个50公里,100多公里的小长途,基于爱好的原因,在B站上关注了很多UP主,虽然自己不能去环华,环球,看各种UP主日常视频也是一种全新体验。B站上曾经最火的骑行UP主是“徐云流浪中国”,在9月份的时候由于他放弃了骑行,导致粉丝量下降,另外一个UP主“朱志文环球骑行”粉丝正逐步上升,总能在评论看到各个UP主粉丝的变化,我就在想,能不能弄一个统计粉丝数据工具,看看每天他们的粉丝变化,每天掉多少粉,涨多少粉,这是最初的想法,就有了一个网站的雏形。网站主要对骑行区的UP主,逻辑上其他区也能用,只是关注点不一样,后面会提到。
编写过程
在开始写代码之前,必要的调研是必不可少的,一个是技术可行性,另外就是类似的网站是否有能参考的。
技术可行验证
数据获取
通过F12,很容易找到网站获取粉丝的url,很简单
curl https://api.bilibili.com/x/relation/stat?vmid=xxx 就能得到一个json数据
xxx 为up主id号。
开发过程
开发工具选择
后端用比较熟悉的 nodejs ,进程用 supervisor 调用监控
存储用 Mysql 数据库
前端用标准 HTML,用 echarts、bootstrap 等组件,组件不熟悉就菜鸟教程+百度,变看资料,边弄
原型
用 AxureRP 简单画了个布局
编码
获取数据
数据库中专门设计了一张表,存储UP主基本信息,一张表,存储粉丝数量和时间,中间通过主键关联。
第一个表暂时是手动录入,第二个表用 nodejs 写一个定时器,定时构造url,发起request请求,将json结果存到表中即可。在测试过程中发现B站会对调用接口频率有检查,通过每个请求间隔开几秒时间就能解决。定时器每小时调用一次。
展示数据
展示数据主要是前端和后端的工作,如果是简单的echarts展示,前端直接套用样例代码,弄个调用,后台从数据库获得数据就可以了。
运行一段时间后,发现想看单个UP主或者某个时间段就比较麻烦,所有开始按界面原型目标进行新界面开发,由于界面开发不是我的强项,我在界面技术学习上时间比较多,主要是样式布局不太熟悉。
成果
目前网站可以针对单个UP主粉丝每天增长变化监控,三天、七天统计精度是一个小时,一个月为一天,右侧为该UP主最新投稿。
遇到的困难
- 前端技术不熟悉 ,通过百度、AI生成代码、在线教程解决
- B站API授权保护,在github上找到一个B站API研究的项目,给了很多帮助,解决了授权问题。
网站上线
网站是为参加1024活动写的,当时网站有点简单的雏形,现在已经上线运行了 1个多月了,网站地址 http://up-data.cn ,欢迎访问。