1. 程式人生 > >微信爬取公眾號評論

微信爬取公眾號評論

大家平常都喜歡看公眾號的文章,但是僅僅是文章內容又不足以使我們更好的參與與作者的互動,於是我找了一篇公眾號的最新文章評論進行爬取分析。
這是效果圖:
詞雲圖

結尾有彩蛋歐…

廢話不多說,現在開始跟我來實現這個充滿黑科技的詞雲圖把!!!
原始碼下載連結

環境:Windows10、Anaconda(Python的IDE)、Fiddler(抓包工具)、相關的庫

首先我利用的是Python的requests庫來模擬請求,如果沒有下載的同學就請開啟cmd,如果你已經對Anaconda配置過環境變量了,就直接輸入以下命令:
pip install requests
如果你已經安裝過了就會顯示如下圖:
成功圖
如果沒有則是:
這裡寫圖片描述


當然如果你連Anaconda都沒有安裝,請參考我另一篇文章
Windows10下安裝Anaconda3(64位)詳細過程
現在我們開始來準備編寫程式碼
我們開啟Jupyter Notebook
Ps:當然你也可以用Spyder,如何使用請看我上面的那篇Anaconda的安裝部落格

在你配置了Anaconda的環境變數的前提下,你開啟cmd,在命令框中輸入命令
jupyter notebook
就會執行如圖所示:
jupyter notebook
然後就會自動開啟一個瀏覽器頁面,如圖所示:
首頁
每個人的預設工作路徑是C盤的使用者目錄下
然後新建一個檔案(點選右上角的New後選擇Python3)
新建
建立成功後進入如圖所示:
這裡寫圖片描述
現在我們就開始碼程式碼啦
首先我們要匯入我們所需要用到的庫
1


第二步就是通過抓包工具分析公眾號評論的請求連結(url)和請求頭(headers)
這裡我使用的是Fiddler工具,具體安裝使用請參考我的另一篇部落格Fiddler的安裝與使用

我們在配置好Fiddler後開啟手機微信,找到你所想要的文章並開啟,這裡我顯示的是我所分析的那一篇推文
然後你就首先根據Host查詢到屬於微信的這個主機所對應的一系列請求
一個一個點開(因為第一次分析你也不知道哪個請求對應的是評論)然後思路是找到響應內容最多的那個。
經過漫長的尋找我們找到了這個請求(抓包是一個很繁瑣的過程,因為你需要準確定位到你所需要查詢的那個請求,所以大家在學習的過程中需要耐心一點)
抓包
還有如果你得到的響應內容是亂碼,那麼你需選中你找到的那個請求右鍵選擇Decode…
decode


這樣就解碼成功啦
當然不要高興的太早,在這裡你還需要將這個請求的url和headers複製到貼上板中,因為我們的程式碼需要它們。

首先我們來看一下requests庫裡面的get方法

requests.get(url, params=None, **kwargs)

從表示式這裡看出url是必須要有的,還有其它的比較重要的引數例如headerstimeout
將我們貼上板中的url和headers複製到程式碼中,如圖
url
這裡寫圖片描述
連結(url)直接複製上去賦值給url就行了,但是headers需要做一下進一步的處理,這裡我就不解釋裡面各引數的含義了,經測試發現只有Cookie是需要加上去的,連User-Agent都不用,這裡我解釋一下為什麼,因為這裡我們其實訪問的是一個評論介面,而介面一般對爬蟲的UA是沒有做反爬處理的,所以最後我們保留Cookie一行加進headers字典裡面就行了。
這裡寫圖片描述
然後第一個難點抓包(分析請求)搞定了,接下的難點來就是處理響應內容了。
當然首先我們向伺服器發出請求
發出請求
最終我們得到了一個字典型別的資料,然後我們觀察一下字典的結構
結構
得到大概結構以後我們來迭代輸出每一行評論資訊,並把評論內容儲存到字串裡面(倒數第一行程式碼是在做結巴分詞,後面那個引數5指的是返回切分後權重值最高的5個片語)

這裡看起來是比較繁瑣,其實就是根據列表字典結構的特性根據索引或者關鍵字來取值,這一步最關鍵的是要理清返回內容的結構結巴分詞只是呼叫api而已。
解析
片語
看到了排列整齊的評論,你離成功只差個詞雲圖,接下來就是詞雲圖的製作,這裡主要用了
詞雲庫:wordcloud
畫圖的庫:matplotlib.pyplot
如果你沒有安裝wordcloud庫,建議去官網下載wordcloud的whl檔案本地安裝(踩過的坑,默默不說話)
程式碼如下:
詞雲
大概講一下流程,先讀取背景圖片1.png,然後通過WordCloud來設定相應的引數。
這裡注意一點,因為WordCloud裡面預設的語言是英語,所以你需要往裡面載入一個簡體中文的字型,一般Windows10自帶的有的,你檔案搜尋一下,改一下路徑,如果沒找到就去網上下載一個。

接著讀取字串Comments(已經分詞過了),為了以後方便檢視把圖片儲存下來。

最後就是畫圖了,其實你不畫找到存好的檔案開啟也是可以的,但是程式設計師能這樣嗎!!!
不能,能用程式碼實現的我就不用其他方法。
這裡我們用的是資料分析流行的畫相簿matplotlib
將wc傳進去imshow方法,設定一下插值的引數為bilinear
設定off引數不顯示難看的座標軸
最後大功告成,你也做了一張充滿黑科技感的詞雲圖啦。
這裡寫圖片描述
是不是在找彩蛋在哪,不要慌,就是下面那狗,皮一下。
巴扎黑

我的個人部落格網站是:www.coderyyn.cn
上面會不定期分享有關爬蟲、演算法、環境搭建以及有趣的帖子
歡迎大家一起交流學習

轉載請註明