Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

在幾年前,網際網路上曾經出現過一款

生成朋友圈相簿

的產品。但是它的流程說起來很不網際網路:

首先,需要新增指定的微訊號,並且給這個微訊號檢視自己朋友圈的許可權;

然後,等待幾個小時;

最後,得到一個連結,裡面用相簿模板顯示了自己的朋友圈內容;

最開始聽起來覺得很牛逼,心想這款產品是怎麼拿到個人的朋友圈資料的,直到看到它的使用流程首先需要新增微信好友,瞬間就笑著明白了。

其實,朋友圈一直是很多人的爬蟲想要採集的領地。

在之前,朋友圈只能在手機或Pad上檢視,要想獲取朋友圈的資料,

要麼手工進行人肉複製,要麼透過鉤子進行處理。

這兩種操作一個太低端了,一個又太高端了。

有沒有稍微簡單一點的呢?

用 Appnium 或許是一個方法,操作起來比鉤子簡單多了,但是,Appnium 的環境配置,就會嚇跑很多朋友了。

所以,Appnium 還是門檻稍高。

直到最近,

微信電腦版開始支援朋友圈

,事情似乎出現了轉機!

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

在之前,州的先生介紹了

「桌面圖形介面程式的自動化和採集」

來聊聊桌面圖形介面的自動化和採集

裡面就提到了

透過 PyWinAuto 和 PyAutoGui 這兩個工具,實現對桌面程式的自動化控制和資料採集

這兩個工具,是否可以應用在微信朋友圈資料的採集上呢?

州的先生,立馬寫了個 Demo 來測試。

首先,引入所需的庫:

import psutilimport pywinautofrom pywinauto。application import Application

其中:

psutil 用於獲取微信電腦版的程序資訊;

pywinauto 用於自動化控制微信電腦版

然後,我們透過 psutil 庫獲取到微信電腦版程式的程序ID:

PID = 0for proc in psutil。process_iter(): try: pinfo = proc。as_dict(attrs=[‘pid’, ‘name’]) except psutil。NoSuchProcess: pass else: if ‘WeChat。exe’ == pinfo[‘name’]: PID = pinfo[‘pid’]

這個程序ID用來提供給 PyWinAuto 以連線微信電腦版。

然後,用 PyWinAuto 例項化一個應用:

app = Application(backend=‘uia’)。connect(process=PID)

接著控制微信電腦版,把朋友圈視窗開啟:

win = app[‘微信’]pyq_btn = win。child_window(title=“朋友圈”, control_type=“Button”)cords = pyq_btn。rectangle()pywinauto。mouse。click(button=‘left’, coords=(cords。left + 10, cords。top + 10))

以上程式碼,就實現了 Python 程式碼控制微信電腦版開啟朋友圈視窗。

效果如下所示:

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

朋友圈的視窗是打開了,如果獲取裡面的資料呢?

我們先用 。dump_tree() 方法看看朋友圈窗口裡面各個控制元件的結構是怎樣的:

print(pyq_win。dump_tree())

這會把朋友圈視窗內所有顯示出來的元件的結構列印到控制檯,其顯示的內容如下圖所示:

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

我們來看一個具體的例子,例如朋友圈內的這條資訊:

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

它在 dump_tree() 中的結構如下所示:

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

可以看到,視窗內的每一個資訊,比如

聯絡人的名稱

朋友圈內容

朋友圈釋出時間

等等都是各種元件構成的。

我們可以透過獲取和控制這些個元件,來實現資料的提取。比如在這個例子裡,我們就可以透過定位到 Edit 這個元件來獲取到這條朋友圈的內容:

Python + 微信電腦版或許是個好組合,輕鬆爬朋友圈資料

跟其他的工具比起來,是不是算是異常簡單了?

不僅簡單,效果還很不錯。

感興趣的朋友們,趕緊試試吧!

求點贊,求關注