1. 程式人生 > >如何快速爬取B站全站視訊資訊

如何快速爬取B站全站視訊資訊

專 欄

640?wx_fmt=png&wxfrom=5&wx_lazy=1

陳鍵冬,Python中文社群專欄作者,知乎專欄:盡瞎扯
GitHub:
https://github.com/chenjiandongx


B站我想大家都熟悉吧,其實 B 站的爬蟲網上一搜一大堆。不過紙上得來終覺淺,絕知此事要躬行,我碼故我在。最終爬取到資料總量為 760萬 條。

準備工作

首先開啟 B 站,隨便在首頁找一個視訊點選進去。常規操作,開啟開發者工具。這次是目標是通過爬取 B 站提供的 api 來獲取視訊資訊,不去解析網頁,解析網頁的速度太慢了而且容易被封 ip。

勾選 JS 選項,F5 重新整理

0?wx_fmt=jpeg

找到了 api 的地址

0?wx_fmt=jpeg

複製下來,去除沒必要的內容,得到https://api.bilibili.com/x/web-interface/archive/stat?aid=15906633,用瀏覽器開啟,會得到如下的 json 資料

0?wx_fmt=jpeg

動手寫碼

好了,到這裡程式碼就可以碼起來了,通過 request 不斷的迭代獲取資料,為了讓爬蟲更高效,可以利用多執行緒。

核心程式碼

0?wx_fmt=png

迭代爬取

0?wx_fmt=png

整個專案的最主要部分的程式碼也就是 20 行左右,挺簡潔的。

執行的效果大概是這樣的,數字是已經已經爬取了多少條連結,其實完全可以在一天或者兩天內就把全站資訊爬完的。

0?wx_fmt=gif

至於爬取後要怎麼處理就看自己愛好了,我是先儲存為 csv 檔案,然後再彙總插入到資料庫。

資料庫表

0?wx_fmt=jpeg

由於這些內容是我在幾個月前爬取的,所以資料其實有些滯後了。

資料總量

0?wx_fmt=jpeg

查詢播放量前十的視訊

0?wx_fmt=jpeg

查詢回覆量前十的視訊

0?wx_fmt=jpeg

各種花樣查詢任君選擇!!視訊的連結為https://www.bilibili.com/video/av+ v_aid
詳細程式碼請移步至 bili.py,專案地址:chenjiandongx/bili-spider 歡迎圍觀

640?wx_fmt=jpeg

長按掃描關注Python中文社群,

獲取更多技術乾貨!

Python 中 文 社 區

Python中文開發者的精神家園

合作、投稿請聯絡微信:

pythonpost

— 人生苦短,我用Python —
1MEwnaxmMz7BPTYzBdj751DPyHWikNoeFS

640?wx_fmt=png