Python爬蟲實現的微信公眾號文章下載器

selenium爬取流程

安裝python selenium自動模塊,通過selenium中的webdriver驅動瀏覽器獲取Cookie登錄微信公眾號後臺;

使用webdriver功能需要安裝對應瀏覽器的驅動插件

注意:谷歌瀏覽器版本和chromedriver需要對應,否則會導致啟動時報錯。

微信公眾號登陸地址:https://mp.weixin.qq.com/

微信公眾號文章接口地址可以在微信公眾號後臺中新建圖文消息,超鏈接功能中獲取:

選定要爬取的公眾號,獲取文章接口地址

文章列表翻頁及內容獲取

Python爬蟲實現的微信公眾號文章下載器

AnyProxy代理批量採集

1、一個微信客戶端:可以是一臺手機安裝了微信的app,或者是用電腦中的安卓模擬器。

2、一個微信個人號:為了採集內容不僅需要微信客戶端,還要有一個微信個人號專門用於採集。

3、本地代理服務器系統:通過Anyproxy代理服務器將公眾號歷史消息頁面中的文章列表發送到自己的服務器上。

4、文章列表分析與入庫系統,分析文章列表和建立採集隊列實現批量採集內容。

Fiddler設置代理和抓包

通過對多個賬號進行抓包分析,可以確定:

_biz:這個14位的字符串是每個公眾號的“id”,搜狗的微信平臺可以獲得

步驟:

1,寫按鍵精靈腳本,在手機上自動點擊公號文章列表頁,也就是“查看歷史消息”;

2,使用fiddler代理劫持手機端的訪問,將網址轉發到本地用php寫的網頁;

3,在php網頁上將接收到的網址備份到數據庫;

4,用python從數據庫取出網址,然後進行正常的爬取。

可能存在的問題:

如果只是想爬取文章內容,似乎並沒有訪問頻率限制,但如果想抓取閱讀數、點贊數,超過一定頻率後,返回就會變為空值。

付費平臺

例如清博 新榜,如果只是想看數據的話,直接看每天的榜單就可以了,還不用花錢,如果需要接入自己的系統的話,他們也提供api接口

3項目步驟

3.1基本原理

目標爬取網站收錄了微信平臺大部分的優質微信公眾號文章,會定期更新,經測試發現對爬蟲較為友好。

1、網站頁面佈局排版規律,不同公眾號通過http://chuansong.me/account/almosthuman2014鏈接中的account區分

2、一個公眾號合集下的文章翻頁也有規律:id號每翻一頁+12

所以流程思路就是

獲取預查詢微信公眾號ID(不是直接顯示的名稱,而是信息名片裡的ID號,一般由數字字母組成)

請求html頁面,判斷是否已經收錄改公眾號

如果沒有收錄,則頁面顯示結果為:404該頁面不存在,所以直接使用正則表達式來匹配該提示信息即可

正則匹配,找到目標公眾號最大收錄文章頁數

解析請求頁面,提取文章鏈接和標題文字

保存信息提取的結果

調用pdfkit和wkhtmltopdf轉換網頁

3.2環境

win10(64bit)

Spyder(python3.6)

安裝轉換工具包wkhtmltopdf

requests

pdfkit

通過對目標url發起requset請求,獲取頁面html信息,然後調用正則方法匹配兩條信息

2、如果存在,最大的文章收錄頁數是多少

Python爬蟲實現的微信公眾號文章下載器

當公眾號存在時,直接調用request解析目標請求鏈接。

Python爬蟲實現的微信公眾號文章下載器

注意,目標爬蟲網站必須要加headers,否則直接拒絕訪問

3.4正則解析,提取鏈接和文章標題

以下代碼用於從html文本中解析鏈接和標題文字信息

Python爬蟲實現的微信公眾號文章下載器

3.5自動跳轉頁面

以下代碼通過循環遞增賦值,改變url中的頁碼參數

Python爬蟲實現的微信公眾號文章下載器

3.6去掉標題中的非法字符

因為windows下文件命令,有些字符是不能用了,所以需要使用正則剔除

itle = re.sub('[\\\\/:*?"<>|]', '', info.loc[indexs]['標題'])

3.7轉換html為PDF

使用pandas的read_csv函數讀取爬取的csv文件,循環遍歷“鏈接”,“標題”,“日期”

然後通過調用pdfkit函數轉換生成PDF文件

3.7轉換html為PDF

使用pandas的read_csv函數讀取爬取的csv文件,循環遍歷“鏈接”,“標題”,“日期”

然後通過調用pdfkit函數轉換生成PDF文件

Python爬蟲實現的微信公眾號文章下載器

3.8生成的PDF結果

Python爬蟲實現的微信公眾號文章下載器

​4結果展示

Python爬蟲實現的微信公眾號文章下載器

Python爬蟲實現的微信公眾號文章下載器


分享到:


相關文章: