自制直播数据采集系统(哔哩哔哩)

优采云 发布时间: 2020-08-27 10:36

  自制直播数据采集系统(哔哩哔哩)

  

  夏哥T台直播B站人气折线图,横轴不够宽,时间都挤在一起了 我干了哪些?

  我制做了一个程序,定期从B站获取直播状态和观看量,这个程序输入UID以后会手动获取到该UID下对应*敏*感*词*的相关信息(*敏*感*词*编号,直播状态,直播标题,*敏*感*词*URL),通过记录为CSV文件的方式来进行打点式记录,从而得到前面这个图表。这个程序会手动判定当前*敏*感*词*状态,依据B站用户空间返回给后端程序的JSON可以进行判定,使用requests恳求相应用户的UID以后,会得到一个返回的json,结构如下

  

  犬山姐的直播信息

  如何剖析里面图中的信息?

  我们只须要了解对应数组的意思即可,经过测试,含义如下所示。

  livestatus:直播状态,1为正在直播,0为直播停止

  online:在线数,也就是听到的所谓人气(也有可能是在线收看数),网页显示的那种人气早已是经过简化的了,这边采集的是原创数值。

  roomid:*敏*感*词*号码

  url和title的作用分别是直播链接和标题

  roundstatus:轮播状态,当为0的时侯表示无轮播,为1表示正在轮播投稿作品。

  下一步该如何做?

  我们看懂了json文件以后不难发觉,不同用户的json文件的一个重要的辨识用户的标志就是UID,这个UID作为参数加在URL的最末尾部份,他告诉了服务器我要获取的是那个用户的直播信息,以便于服务器返回相关的信息给后端进行处理。这样一来我们只要模拟后端处理程序循环给服务器发起恳求就可以过一段时间获取一次相关信息,并将它保存为文件。于是我们得到下述代码:

  

  程序代码

  我们用了python自带的json库来解析json,time库用于停顿固定的间隔和构成时间戳,第三方库requests负责向服务器发起恳求。其中为了提升程序的灵活性,我们用变量替代了UID和暂停时间部份,以便于用户自己输入UID和暂停时间进行采集。

  下面的部份将文件用追加形式写入为csv(逗号分隔表格)文件(因为格式简单),并保存成文件,等待接下来要构造的分析器对他进行解析。

  接下来编撰解析器。解析器的功能是把csv文件转化为x y两个轴的两个列表用于显示,并同时添加和勾画表头、图例等。这个部份使用python自带的csv库对csv数据进行解析,并输出给两个事先打算的空列表(x和y),然后使用第三方库matplotlib来勾画折线统计图表明趋势,并设置好规格,代码如下:

  

  分析器,第一至四行设置了图形的大小和字体以及编码

  这时候开启采集器,等到直播完毕,手动关掉采集器,启动分析器就可以勾画图表了,图表显示在一个窗口上面,可自行查看放大。、

  存在什么样的问题?

  本系统过分简单,没有对意外情况进行考虑(用户无*敏*感*词*,网络联接失败等),也没有自行检查直播开始或则结束进而达到手动停止记录并启动分享的功能,后续可能会进行更改。

  以上是简单的记录,以备不时之需

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线