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

做本例的原因,是原来抓取 当前在线人数与正在观看人数 的脚本出了问题,报错,无法执行!

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

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


【动态网页】

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

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

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


【寻找数据来源】

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

排查json,没有!


排查js,找到了!

【详解】b站改版后获取当前正在观看人数_第1张图片

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

【详解】b站改版后获取当前正在观看人数_第2张图片

由以上寻找的过程,我们可以明白,为什么网络选项,是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的选择操作,选择到这个两个数字就可以了!


你可能感兴趣的:(python,23,planB)