抓取B站所有用戶信息(11/29更新數據)

有時候沒有實際需求,那學習就只能從愛好入手了。

目前我所想到的一些感興趣的任務有:

  1. B站所有用戶
  2. B站視頻下載
  3. B站彈幕和評論分析
  4. 虎牙和鬥魚直播視頻和彈幕實時獲取
  5. 網易雲評論獲取和分析
  6. 招聘網站全站爬蟲和分析
  7. CSDN關注所有與Python有關的博主

第三個就有點意思了,彈幕和評論是可以知道是誰發的,那麼當你有了B站所有彈幕和評論的時候,你就可以從一個人發的彈幕和評論分析這個人的性格特點,不過想要所有數據,這幾乎是不可能的,一天幾十塊的優質代理我可買不起。

第四個的話主要是沒時間去看,只能下下來空閒的時候看,彈幕的獲取主要是爲了分析主播目前的狀態,比如馬老師變撈(老)了)、騷男是不是又和小姐姐聊騷了、神超的不當人教學等。
上面這些內容應該都會在近期發佈出來,目前只踩點了一部分,而且也沒有實現。

今天我們來抓取B站所有用戶信息,包括( ‘mid’: 用戶ID, ‘name’: 用戶暱稱, ‘sex’:性別, ‘sign’: 簡介, ‘level’: 等級, ‘birthday’: 生日, ‘coins’:硬幣數,‘following’:關注數, ‘follower’: 粉絲數,“archive”:視頻總播放量,“article”:這個好像是文章閱讀量)。

其實想獲取單個用戶的這些信息很簡單,只需要對網站抓一下包就能知道數據來源了(谷歌瀏覽器按F12,然後一條一條請求看返回的數據,或者先看請求的鏈接篩選)。分析了過B站之後(不只是B站用戶),發現B站對於爬蟲是比較友好的,並沒有什麼加密機制,大部分數據都是以api接口返回json格式的數據。甚至反爬也僅僅是驗證UA頭和IP頻率限制。所以要想得到大量數據,只需要代理好就行了。

不過,當爬蟲的數據量到達一定量級的時候,效率就顯得極爲重要了,粗略估計B站用戶有4億多,其中兩億多是殭屍用戶,沒有任何有價值的信息,但爬取的時候並不能直接區分。也就是說想要獲取B站所有的用戶,需要發出3*4億個http請求(爲什麼是3呢,因爲抓取的信息分佈在3個api裏)。這種量級的數據用requests是難以達到的。使用scrapy有點大材小用了,於是我選擇了asyncio+aiohttp,這是一個神器,效率是真的高,但出錯也多(多看官方文檔和百度就行)。
在這裏插入圖片描述

代碼:https://github.com/kanadeblisst/aioBUser

如果不是商用,優質代理的價格實在是有點高。作爲學生黨只能買一些測試級代理,這樣一天也就拿不到多少數據了。另外,關於代理的利用率,我想到的是先創建兩個Redis數據庫集合,一個放所有提取的代理,一個放有效的代理,每次檢查從接口返回的代理是否在數據庫中,不在則驗證其有效性,然後將有用的存入數據庫。這樣爬蟲程序只需要從有效代理池中隨機取出代理。如果爬蟲出現異常或者非200狀態碼,就將代理從數據庫中移除。不過就算這樣,爬蟲的效率還是太低了,主要是因爲代理的可用率太低(雲代理太坑了,建議後來者不要踩坑),有效的代理每次都只有一百多個,這樣運行了五天才得到400多萬的數據,照這個速度也就四百多天就完成了。

目前數據比較分散,要一段時間後才能公佈數據(也就400天吧) 。如果想要目前的數據,請留言郵箱或者發郵件到[email protected]

11/29更新

因爲沒有優質代理,我很早就放棄抓全站數據了。而已抓取的數據中,ID很分散(協程不會按順序執行),沒有什麼價值,我已經刪除了。現在看有幾個人想要數據,我重新抓取了一些量,b站反爬更新了,對同時訪問次數有限制,所以不能開多線程或者協程了,使用單線程每天的抓取量也就十一二萬,所以只抓前一百萬的數據供大家分析(後續如果有時間會擴展到前一千萬數據)。

數據下載鏈接:https://www.lanzous.com/i7q3e8d (包含json和csv格式)
字段含義如下(CSV格式的文件忘了加第一行的字段了,自己加吧,順序和下面的一樣)

_id: 用戶ID,
name: 用戶名,
sex: 性別,
sign: 個性簽名,
rank: 不清楚,
level: 等級,
birthday: 生日,
vtype: 會員類型(0非會員, 1會員,2年度大會員),
vcount: 發佈視頻數量,
artcount: 發佈文章數量,
pcount: 發佈圖片數量,
acount: 發佈音頻數量,
archive: 視頻總播放量,
article: 文章總閱讀量,
likes: 總點贊數,
following: 關注人數,
follower: 粉絲數

最後,我正在學習一些機器學習的算法,對於一些我需要記錄的內容我都會分享到博客和微信公衆號,歡迎關注。平時的話一般分享一些爬蟲或者Python的內容。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章