用Python获取B站UP信息

  我自己经常逛B站,发现很多小伙伴好像住在B站一样,就研究了一下怎么用Python获取B站UP们的一些信息.比如注册时间,生日,有多少粉丝等,说明一下,本文只说分析过程,代码地址见文章底部.

  以UP主哔哩哔哩弹幕网为例子,我们先打开其个人主页,如图所示看到一些数据和标注:

  那么这些数据我们该怎么去获取呢,F12打开,通过Network查看在访问该主页时,都有哪些请求,选择XHR后逐条查看可以看到GetInfo的响应中有我们需要的大部分信息:

GetInfo的响应:

1
{"status":true,"data":{"mid":8047632,"name":"\u54d4\u54e9\u54d4\u54e9\u5f39\u5e55\u7f51","sex":"\u7537","rank":10000,"face":"http:\/\/i0.hdslb.com\/bfs\/face\/8aa6bd8cf269021ffa7a03f7a903ca899c11b7fb.jpg","regtime":1423215591,"spacesta":0,"birthday":"01-01","sign":"\u54d4\u54e9\u54d4\u54e9 \u5e72\u676f - ( \u309c- \u309c)\u3064\u30ed","level_info":{"current_level":6},"official_verify":{"type":1,"desc":"\u54d4\u54e9\u54d4\u54e9\u5f39\u5e55\u7f51 \u5b98\u65b9\u8d26\u53f7","suffix":""},"vip":{"vipType":2,"vipStatus":1},"toutu":"bfs\/space\/768cc4fd97618cf589d23c2711a1d1a729f42235.png","toutuId":1,"theme":"default","theme_preview":"","coins":0,"im9_sign":"4f51cb223b811215a260fdae37bc2dfc","fans_badge":false}}

  可以看到其中有UP的ID,名字,性别,头像,签名,会员等级,注册时间等等.注意:这个请求时ajax的,所以写代码去获取的时候需要我们去单独处理一下,否则什么信息都得不到.我们已经逐条看了XHR部分的请求,,从这部分的请求中并没我们没有看到播放量,粉丝数量等字段,那么这些数据又该怎么去获取呢?下面查看JS部分.

  在JS这个部分里我们看到这两个请求分别有UP主关注了多少人,有多少粉丝,播放量和阅读数量.我们右键Copy这个链接,去掉链接中的callback部分去访问,就可以得到返回的json数据了:

  现在已经得到了UP信息的大部分字段,剩下就是写代码的事了,比如怎么发起相关请求,解析其中的json数据,存入数据库等.说明一下,代码原作不是我,写这篇文章之前,我已经将代码更新,提交给了Airing同学,代码工作正常,并且邮件联系了Airing同学,获得了他的授权,可以直接使用他的代码地址.

  代码链接:https://github.com/airingursb/bilibili-user.

0%