前言
主要記錄自己完成爬蟲的思路:從how to do到what to do
這是一個拿 python 練手的專案,雖說是入門級,但其餘爬蟲也萬變不離其宗 ̄へ ̄
原始碼地址 Github:bili-danmu
過程
1. 彈幕究竟是什麼玩意
首先,讓我們看看B站客戶端是如何接收到彈幕的
這就需要讓我們看看網頁的原始碼了
隨便開啟一個視訊網頁如下:
那麼,彈幕是怎麼載入進網頁面的呢?
接下來讓我們回憶一下http請求的過程:
0. 3次握手建立TCP連線
1. 瀏覽器得到頁面,也就是html檔案
2. 根據html檔案裡如<script>標籤或<img>標籤等繼續像伺服器請求相應的資源
可以想象,彈幕檔案應該是在瀏覽器得到頁面後像伺服器請求得來的,也就是說,它隱藏在瀏覽器下載的檔案中!不妨先假想一下:彈幕檔案應該是一個JSON格式或者是XML格式的檔案
這樣才方便應用與管理
右鍵審查元素
,開啟網路面板,分析瀏覽器抓取下來的包,其中有一個檔案引起了我們的注意:
這是一個xml
檔案,也是我們猜測的彈幕格式之一,檢視它的內容:
很驚喜的發現,這不正是彈幕檔案嗎!  ̄へ ̄
2. 如何得到彈幕檔案
檢視彈幕檔案的檔名:
全稱http://comment.bilibili.com/6154070.xml
且看資源識別符號6154070.xml
這應該便是唯一標誌彈幕檔案的檔名了
關於6154070.xml
這個檔名是如何來的?這只有在網頁原始碼中一探究竟。右鍵檢視網頁原始碼,查詢與6154070.xml
有關的欄位:
但現在我們還是不能放心,對比其他視訊後才終於發現,原來正是這個<script>
標籤內的屬性決定了彈幕檔名
分析完畢,接下來就是最快的編碼工作了  ̄へ ̄
如何編寫爬蟲
其實分析到了這裡,程式碼編寫也是水到渠成的事了
我選擇了 requests
與 lxml
這種輕量級的庫來編寫
Talk is cheap. Show me the code. 廢話不多說,完整程式碼請看 Github:bili-danmu
結語
對於爬蟲來說,往往分析頁面花費的時間大於編寫程式碼的時間。總而言之,大概就是這麼個流程,依葫蘆畫瓢也能搞定大部分網站內容的爬取  ̄へ ̄
写评论
很抱歉,必須登入網站才能發佈留言。