Python 爬取朋友圈最新方法!!

在幾年前,互聯網上曾經出現過一款生成朋友圈相冊的產品。但是它的流程說起來很不互聯網:

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

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

在之前,朋友圈只能在手機或 Pad 上查看,要想獲取朋友圈的數據,要麼手工進行人肉複製,要麼通過鉤子進行處理。

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

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

所以,Appnium 還是門檻稍高。

直到最近,微信電腦版開始支持朋友圈,事情似乎出現了轉機!

所以可以通過 PyWinAuto 和 PyAutoGui 這兩個工具,實現對桌面程序的自動化控制和數據採集

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

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

首先,引入所需的庫:

import psutil
import pywinauto
from pywinauto.application import Application

其中:

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

PID = 0
for 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 代碼控制微信電腦版打開朋友圈窗口。

效果如下所示:

朋友圈的窗口是打開了,如果獲取裏面的數據呢?

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

print(pyq_win.dump_tree())

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

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

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

可以看到,窗口內的每一個信息,比如聯繫人的名稱朋友圈內容朋友圈發佈時間等等都是各種組件構成的。

我們可以通過獲取和控制這些個組件,來實現數據的提取。比如在這個例子裏,我們就可以通過定位到 Edit 這個組件來獲取到這條朋友圈的內容:

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

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

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

推薦關注「Python 開發者」,提升 Python 技能

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/3MnxmIk7bV_Z4qXvxzckEA