1. 程式人生 > >python小白也可以分分鐘爬取微博數據,並生成有個性的詞雲,你get到了嗎?

python小白也可以分分鐘爬取微博數據,並生成有個性的詞雲,你get到了嗎?

python 爬蟲 web開發 編程

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

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

很早前寫過一篇怎麽利用微博數據制作詞雲圖片出來,之前的寫得不完整,而且只能使用自己的數據,現在重新整理了一下,任何的微博數據都可以制作出來,放在今天應該比較應景。


技術分享圖片


本文教你怎麽用Python快速創建出有心意詞雲,即使是Python小白也能分分鐘做出來。

準備工作

本環境基於Python3,理論上Python2.7也是可行的,先安裝必要的第三方依賴包:


技術分享圖片


requirement.txt文件中包含上面的幾個依賴包,如果用pip方式安裝失敗,推薦使用Anaconda安裝

pip install -r requirement.txt

第一步:分析網址

打開微博移動端網址 ,找到女神的微博ID,進入她的微博主頁,分析瀏覽器發送請求的過程


技術分享圖片


打開 Chrome 瀏覽器的調試功能,選擇 Network 菜單,觀察到獲取微博數據的的接口是 ,後面附帶了一連串的參數,這裏面有些參數是根據用戶變化的,有些是固定的,先提取出來。


技術分享圖片


再來分析接口的返回結果,返回數據是一個JSON字典結構,total 是微博總條數,每一條具體的微博內容封裝在 cards 數組中,具體內容字段是裏面的 text 字段。很多幹擾信息已隱去。


技術分享圖片


第二步:構建請求頭和查詢參數

分析完網頁後,我們開始用 requests 模擬瀏覽器構造爬蟲獲取數據,因為這裏獲取用戶的數據無需登錄微博,所以我們不需要構造 cookie信息,只需要基本的請求頭即可,具體需要哪些頭信息也可以從瀏覽器中獲取,首先構造必須要的請求參數,包括請求頭和查詢參數。


技術分享圖片



技術分享圖片


uid是微博用戶的id,

· containerid雖然不什麽意思,但也是和具體某個用戶相關的參數

· page 分頁參數


技術分享圖片


python學習路線分三大階段:基礎-進階-框架-項目實戰

基礎第一階段:基礎Python的理解。基礎第二階段面對對象編程(註重編程能力)

基礎第三階段面向對象“設計思想”-封裝-繼承。基礎第四階段python高級專題。

進階班第一階段:linux基礎。第二:python web工具。第三python部署工具。

第四關系型數據庫。第五Python web框架基礎原理。

框架階段.python web開發第一階段web.py。基礎第二Django基礎。

第三flask基礎。第四tornado基礎,

項目實戰:個人博客系統-微信開發-企業OA系統=網盤系統。

第三步:構造簡單爬蟲

通過返回的數據能查詢到總微博條數 total,爬取數據直接利用 requests 提供的方法把 json 數據轉換成 Python 字典對象,從中提取出所有的 text 字段的值並放到 blogs 列表中,提取文本之前進行簡單過濾,去掉無用信息。順便把數據寫入文件,方便下次轉換時不再重復爬取。


技術分享圖片



技術分享圖片


第四步:分詞處理並構建詞雲

爬蟲了所有數據之後,先進行分詞,這裏用的是結巴分詞,按照中文語境將句子進行分詞處理,分詞過程中過濾掉停止詞,處理完之後找一張參照圖,然後根據參照圖通過詞語拼裝成圖。


技術分享圖片


最終效果圖:


技術分享圖片



技術分享圖片


哪些人比較適合學Python

1.編程菜鳥新手:非常喜愛編程,以後想從事相關工作,但是零基礎,不知道入門選擇什麽編程語言的朋友,其實是最適合選擇Python編程語言的。

2.網站前端的開發人員:平常只關註div+css這些頁面技術,很多時候其實需要與後端開發人員進行交互的;

3.SEO人員:很多SEO優化的時候,苦於不會編程,一些程序上面的問題,得不到解決,只能做做簡單的頁面優化。 現在學會Python之後,你和我一樣都可以編寫一些查詢收錄,排名,自動生成網絡地圖的程序,解決棘手的SEO問題。

4.在校學生:想有一技之長,或者是自學編程的愛好者,希望快速入門,少走彎路,都可以選擇Python語言。

我有一個微信公眾號,經常會分享一些python技術相關的幹貨;如果你喜歡我的分享,可以用微信搜索“python語言學習”關註。


歡迎大家加入千人交流答疑群:588+090+942


python小白也可以分分鐘爬取微博數據,並生成有個性的詞雲,你get到了嗎?