python爬取B站千萬級數據,發現了這些熱門UP主的祕密!

Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具備近二十年的發展歷史,成熟且穩定。它包含了一組完善並且容易理解的標準庫,可以輕鬆完成不少常見的任務。它的語法很是簡捷和清晰,與其它大多數程序設計語言不同,它使用縮進來定義語句。python

Python支持命令式程序設計、面向對象程序設計、函數式編程、面向切面編程、泛型編程多種編程範式。與Scheme、Ruby、Perl、Tcl等動態語言同樣,Python具有垃圾回收功能,可以自動管理存儲器使用。它常常被看成腳本語言用於處理系統管理任務和網絡程序編寫,然而它也很是適合完成各類高級任務。Python虛擬機自己幾乎能夠在全部的做業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具能夠將Python源代碼轉換成能夠脫離Python解釋器運行的程序。web

粉絲獨白sql

提及熱門的B站相信不少喜歡玩動漫的,看最有創意的Up主的同窗必定很是熟悉。我突發奇想學Python這麼久了,爲啥不用Python爬取B站中我關注的人,已經關注的人他們關注的人,看看全站裏面熱門的UP主都是是哪些。數據庫

要點:編程

- 爬取10萬用戶數據json

- 數據存儲vim

- 數據詞雲分析api

1.準備階段微信

寫代碼前先構思思路:既然我要爬取用戶關注的用戶,那我須要存儲用戶之間的關係,肯定誰是主用戶,誰是follower。網絡

存儲關係使用數據庫最方便,也有利於後期的數據分析,我選擇sqlite數據庫,由於Python自帶sqlite,sqlite在Python中使用起來也很是方便。

數據庫中須要2個表,一個表存儲用戶的相互關注信息,另外一個表存儲用戶的基本信息,在B站的用戶體系中,一個用戶的mid號是惟一的。

而後我還須要一個列表來存儲因此已經爬取的用戶,防止重複爬取,畢竟用戶之間相互關注的現象也是存在的,列表中存用戶的mid號就能夠了。

2.新建數據庫

先寫建數據庫的代碼,數據庫中放一個用戶表,一個關係表:

3.爬取前5頁的用戶數據

我須要找到B站用戶的關注列表的json接口,很快就找到了,地址是:

https://api.bilibili.com/x/relation/followings?vmid=2&pn=1&ps=20&order=desc&jsonp=jsonp&callback=__jp7

其中vimd=後的參數就是用戶的mid號

pn=1指用戶的關注的第一面用戶,一面顯示20個用戶

由於B站的隱私設置,一我的只能爬取其餘人的前5頁關注,共100人。

整個爬取頁面的思路比較簡單,首先設置header,用requests庫進行API請求,得到關注的用戶數據列表。

 

咱們爬取前5頁,每一頁的數據進行簡單的處理,而後轉爲字典數據進行獲取mid,uname,sign3個維度的數據,最後save()函數存入db.

4.存入數據庫

咱們數據集裏面一共有2個表,一個用戶列表,用來存儲因此的用戶信息,一個是用戶之間的關注信息。

5.探祕是熱門UP主

打算利用已經爬取到本地的數據進行詞雲的生成,來看一下這10萬用戶中共同的關注的哪些UP主出現的次數最多。

代碼的思路主要是從數據庫中獲取用戶的名字,重複的次數越多說明越多的用戶關注,而後我使用fate的一張圖片做爲詞雲的mask圖片,最後生成詞雲圖片。

最後一塊兒來看一下詞雲圖

能夠看出蕾絲,暴走漫畫,木魚水心,參透之C君,papi醬等B站大UP主都是熱門關注。

Python能夠作什麼?

web開發和 爬蟲是比較適合 零基礎的

自動化運維 運維開發 和 自動化測試 是適合 已經在作運維和測試的人員

大數據 數據分析 這方面 是很須要專業的 專業性相對而言比較強

科學計算 通常都是科研人員 在用

機器學習 和 人工智能 首先 學歷 要求高 其次 高數要求高 難度很大

我有一個微信公衆號,常常會分享一些python技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「python語言學習」關注

歡迎你們加入千人交流答疑裙:699+749+852

相關文章
相關標籤/搜索