1. 程式人生 > >【詳解】b站改版後獲取當前正在觀看人數

【詳解】b站改版後獲取當前正在觀看人數

做本例的原因,是原來抓取 當前線上人數與正在觀看人數 的指令碼出了問題,報錯,無法執行!

我們找到原因,是由於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的選擇操作,選擇到這個兩個數字就可以了!

相關推薦

b改版獲取當前正在觀看人數

做本例的原因,是原來抓取 當前線上人數與正在觀看人數 的指令碼出了問題,報錯,無法執行! 我們找到原因,是由於B站改版,主頁的HTML程式碼發生變化,當前正在觀看人數不在網頁上顯示了。所以原來的網頁資訊篩選方法也要變化! 我們是要去尋找一個,不再在網頁顯示的資訊! 【動態

(轉載)--SG函數和SG定理

nbsp 發現 方式 spa 賦值 problem eve 查詢 mex 在介紹SG函數和SG定理之前我們先介紹介紹必勝點與必敗點吧. 必勝點和必敗點的概念: P點:必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。 N

KMP算法

是不是 代碼 ++ 大牛 bilibili 開始 最長 [] 分別是 前言 KMP算法是學習數據結構 中的一大難點,不是說它有多難,而是它這個東西真的很難理解(反正我是這麽感覺的,這兩天我一直在研究KMP算法,總算感覺比較理解了這套算法, 在這裏我將自己的思路分享給大家

銀行信用評分卡中的WOE在幹什麼?WOE的意義?為什麼可以使用WOE值代替原來的特徵值來做LR的訓練輸入資料

其實我是帶著這個問題發現這篇帖子的 為什麼可以使用WOE值代替原來的特徵值來做LR的訓練輸入資料 以下為原文 https://zhuanlan.zhihu.com/p/30026040 WOE & IV woe全稱叫Weight of Evidence,常用在風險評估、授

快速冪 二進位制 取模

本來想昨天寫的   看到了cod:ww2  我:我就玩一把,真的,就一把 然後就到了12點 真香~ 程式碼如下 不想理解可以直接拿來用 時間複雜度 logn typedef long long ll; ll quickmod(ll n) {

C++ MFC程序間通訊之剪貼簿

Windows剪貼簿是一種比較簡單的程序間通訊機制,同時它的開銷相對較小。它的實現原理很簡單,其實就是由由作業系統維護的一塊記憶體區域, 這塊記憶體區域不屬於任何單獨的程序,但是每一個程序又都可以訪問這塊記憶體區域,當一個程序將資料放到該記憶體區域中,而另一個

HTTP協議——經典面試題(轉載)

http請求由三部分組成,分別是:請求行、訊息報頭、請求正文 HTTP(超文字傳輸協議)是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連線方式,HTTP1.1版本中給出一種持續連線的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。

js網站國際化,多國語言切換

JS網站國際化,多國語言切換【詳解】 作者:Anmbition 在web開發過程中通常會碰到需要多國語言支援的需求,我也看過一些文件,但寫的都不盡人意,最終我整理了一套通過js程式碼完成解決方案,並對程式碼進行了很大程度的優化,在使用過程中只需極少的程式碼即可完成。 第一步:核心JS

快速冪&龜速乘&快速乘

我相信進來看的人都會快速冪,對吧(和善的眼神) 如果不會。。。。那我們現在開始講吧(要不然為什麼叫詳解2333 ) 如果已經知道,就跳到下面去看吧~ 1. 快速冪 1.0 快速冪的誕生——最初的思路 我們通常需要求解形如 ab mod c 的式子,當b比較小的時

CS231n assignment1KNN中不使用迴圈計算距離:從原理到程式

本文主要講述不使用迴圈結構來計算兩個矩陣的歐氏距離, 設訓練集矩陣為train,size為num_train * num_features,設驗證集矩陣為validate,size為num_test,num_features。 因此我們計算每一個驗證集樣本到訓練集樣本的距離,就是將訓練集

JNI(Java Native Interface)

前言: 一提到JNI,多數程式設計者會下意識地感受到一種無法言喻的恐懼。它給人的第一感覺就是"難",因為它不是單純地在JVM環境內操作Java程式碼,而是跳出虛擬機器與其他程式語言進行互動。   你可能至今還沒聽說過這個技術,但是如果你是一個原始碼愛好者,或者有翻閱過JDK的一些原始碼,那你一定有接觸過nat

CopyOnWriteArrayList

前言   之前看《Java併發程式設計》這本書的時候,有看到這個,只記得"讀多寫少"、"寫入時複製"。書中沒有過多講述,只是一筆帶過(不過現在回頭看,發現講的都是精髓。老外的書大多重理論,喜歡花大篇幅講概念,這點我非常喜歡)記得當時是覺得可能有點難,先跳過了,結果就忘記回頭看了。今天突然想起來,就看了一下,整

以銀行零售業務為例,一個案例說清楚視覺化微服務架構_Kubernetes中文社群

Part 1: API設計和策略 軟體系統的複雜性是一個很痛苦的問題,而且無法避免。Fred Brooks將複雜性描述為,軟體系統解決業務問題所固有的本質複雜性,以及實施該解決方案所帶來的偶發複雜性。 隨著與採用“API優先”工程實踐和微服務架構的組織進行更密切的合作,我發現這種描述越來

吐槽B大量番劇下架,程式猿們這時都在幹什麼?

每天在來上班的路上我都會“變態”數次 出門前我是固態的 邁出空調區域時我變成了液態 等我走到馬路上我整個人已然昇華為氣態 好不容易或者到了辦公室 終於可以安全的刷刷微博 一看到這條訊息的時候嚇得我立馬凝華了 就這樣沒有一絲絲防備的就下架了? 這

必須知道的八大種排序演算法java實現(二) 選擇排序,插入排序,希爾演算法

一、選擇排序   1、基本思想:在要排序的一組數中,選出最小的一個數與第一個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。   2、例項   3、演算法實現    /** * 選擇排序演算法 * 在未

HTTP協議——經典面試題

http請求由三部分組成,分別是:請求行、訊息報頭、請求正文 HTTP(超文字傳輸協議)是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連線方式,HTTP1.1版本中給出一種持續連線的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。 1、常用的HTTP方法有哪些?GET:

WebSocket相關知識整理

前言   記得大概半年前就產生了疑惑,即後臺如何主動向前端推送資料。問了下專業老師,知道了原來有一個叫WebSocket的技術可以用於推送資料。於是,當時我就找了個教程,用的是Spring WebSocket。照著敲了一遍,也就搭起來了,依葫蘆畫瓢而已。當時有其他東西要學,也沒有相關的需求,就沒再接觸過。前

猜數字遊戲①,猜錯繼續,猜對結束

猜數字遊戲通常由兩個人玩,一方出數字,一方猜(這裡就由系統陪您玩啦)。出數字的人要想好一個隨機數字,不能讓猜的人知道,猜的人就可以開始猜了。 猜數字遊戲通常設有猜測次數的上限,這裡設定為 0~8 宣告: 具體的實現方式有很多,這裡僅供參考使用。 首先來個單次執行的-------&

更新整個maven工程及相關底層並再執行的記錄

前言:本例我們的需求其實只是改一個SQL,從昨天上午開始工作,直到昨晚下班前才搞定。只是一個SQL,而且只是加了個條件。 整了一天,這麼長的時間只解決了一個這,需要好好反思下。接下來對12月22日這不堪回首的一天進行簡單記錄。 1.【修改SQL】 本例的需求是修改SQL

線段樹

線段樹詳解 By 巖之痕 目錄: 一:綜述 二:原理 三:遞迴實現 四:非遞迴原理 五:非遞迴實現 六:線段樹解題模型 七:掃描線 八:可持久化