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