您的位置:首页 > 其它

【详解】b站改版后获取当前正在观看人数

2015-12-07 17:57 393 查看
做本例的原因,是原来抓取 当前在线人数与正在观看人数 的脚本出了问题,报错,无法执行!

我们找到原因,是由于B站改版,主页的HTML代码发生变化,当前正在观看人数不在网页上显示了。所以原来的网页信息筛选方法也要变化!

我们是要去寻找一个,不再在网页显示的信息!

【动态网页】

这里提一个概念:动态网页

其实,我们这次需要改进脚本,就是由于改版以后,静态网页升级为了动态网页。我们需要的信息,没有直接在HTML代码中出现。所以选不到!

这就需要我们去寻找这个信息在哪儿!

【寻找数据来源】

目前为止,我们遇到的动态信息来源只有两个,js和json!

排查json,没有!



排查js,找到了!



然后直接访问这个响应对应的消息头中的请求网址就可以了!



由以上寻找的过程,我们可以明白,为什么网络选项,是F12控制台中最重要的选项卡!

因为这里,有信息来源的地址,和每一条反馈的响应!!!

我们找到js的地址如下

mainUrl="http://www.bilibili.com/online.js"

可以直接访问这个js的地址,拿到js的反馈信息,反馈信息里就会有我们要的信息。

def toOnline():
'''拿到js反馈信息'''
resp=urllib2.urlopen(mainUrl)
return resp.read()

【注意】:这里必须要read一下,才能够拿到js返回来的信息。

def getPlayNumber():
'''获取js中的正在观看人数'''
resp=toOnline()
print resp
data=resp[42:49]
return data

我们将resp打印出来,内容如下:



这一堆信息,其实是字符串,我们需要从其中选择我们需要的数字信息。

我们看到,第一个是在线人数,第二个是正在观看人数。

所以通过String的选择操作,选择到这个两个数字就可以了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: