
querylist采集微信公眾號文章
querylist采集微信公眾號文章(垃圾程序員如何采集微信公眾號的內容?(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2021-10-29 00:19
今天,作為一個(gè)垃圾程序員的小編,和大家聊聊微信公眾號采集的內容?
首先你要明確你的目標:你的采集公眾號文章的數據會(huì )放在哪里?是在A(yíng)PP上還是在自己的官網(wǎng)上。,
意思是:你用這個(gè)微信公眾號的內容做什么?
幾個(gè)小白之前從我這里買(mǎi)過(guò)微信公眾號采集系統。主要用于采集公眾號原創(chuàng )內容,提升網(wǎng)站收錄和關(guān)鍵詞的內容排名。
問(wèn)題 1:我可以查看和修改 采集 中的數據嗎?
我的回答:采集過(guò)來(lái)的數據可以在系統上設置:under review,這種情況不會(huì )直接采集到你的網(wǎng)站,你可以選擇修改文章標題和圖片內容,然后發(fā)布。
這可以防止搜索引擎發(fā)現您在作弊 采集 內容,因為您在后臺手動(dòng)發(fā)布它。當然,我們的采集操作系統是原生態(tài)開(kāi)發(fā)的,不是市面上的采集軟件,所以我們不會(huì )在這里hack別人,因為他們開(kāi)發(fā)的系統和軟件都比較老,對于搜索引擎。把握一個(gè)標準,尤其是百度搜索。
回到正題:如何把采集微信公眾號文章放到官網(wǎng)或APP上?
1.公眾號抓包是通過(guò)微信公眾號用戶(hù)在微信上的登錄信息在微信系統中抓包的
2.在微信公眾號系統中設置微信公眾號登錄信息到我們系統
3.使用設置的登錄信息進(jìn)行微信搜索和微信抓包文章
4.將抓到的公眾號設置為系統中的普通用戶(hù)
5. 在系統中編輯、審核并發(fā)布捕獲的文章,并與對應的用戶(hù)關(guān)聯(lián)
6.發(fā)布的文章和普通用戶(hù)發(fā)布的文章沒(méi)有區別,可以直接使用之前的管理方式進(jìn)行管理。
準備公眾號獲取Token和Cookies的價(jià)值
1.用自己的公眾號登錄
2. 點(diǎn)擊“素材管理->新建圖文素材”
3.點(diǎn)擊圖形編輯器工具欄上的“超鏈接”
4.在對話(huà)框的“鏈接輸入法”中選擇“查找文章”
5.采集 使用的接口來(lái)自這里
加我微信購買(mǎi)咨詢(xún),我的微信是:1124805587 查看全部
querylist采集微信公眾號文章(垃圾程序員如何采集微信公眾號的內容?(組圖))
今天,作為一個(gè)垃圾程序員的小編,和大家聊聊微信公眾號采集的內容?
首先你要明確你的目標:你的采集公眾號文章的數據會(huì )放在哪里?是在A(yíng)PP上還是在自己的官網(wǎng)上。,
意思是:你用這個(gè)微信公眾號的內容做什么?
幾個(gè)小白之前從我這里買(mǎi)過(guò)微信公眾號采集系統。主要用于采集公眾號原創(chuàng )內容,提升網(wǎng)站收錄和關(guān)鍵詞的內容排名。
問(wèn)題 1:我可以查看和修改 采集 中的數據嗎?
我的回答:采集過(guò)來(lái)的數據可以在系統上設置:under review,這種情況不會(huì )直接采集到你的網(wǎng)站,你可以選擇修改文章標題和圖片內容,然后發(fā)布。
這可以防止搜索引擎發(fā)現您在作弊 采集 內容,因為您在后臺手動(dòng)發(fā)布它。當然,我們的采集操作系統是原生態(tài)開(kāi)發(fā)的,不是市面上的采集軟件,所以我們不會(huì )在這里hack別人,因為他們開(kāi)發(fā)的系統和軟件都比較老,對于搜索引擎。把握一個(gè)標準,尤其是百度搜索。
回到正題:如何把采集微信公眾號文章放到官網(wǎng)或APP上?
1.公眾號抓包是通過(guò)微信公眾號用戶(hù)在微信上的登錄信息在微信系統中抓包的
2.在微信公眾號系統中設置微信公眾號登錄信息到我們系統
3.使用設置的登錄信息進(jìn)行微信搜索和微信抓包文章
4.將抓到的公眾號設置為系統中的普通用戶(hù)
5. 在系統中編輯、審核并發(fā)布捕獲的文章,并與對應的用戶(hù)關(guān)聯(lián)
6.發(fā)布的文章和普通用戶(hù)發(fā)布的文章沒(méi)有區別,可以直接使用之前的管理方式進(jìn)行管理。
準備公眾號獲取Token和Cookies的價(jià)值

1.用自己的公眾號登錄
2. 點(diǎn)擊“素材管理->新建圖文素材”
3.點(diǎn)擊圖形編輯器工具欄上的“超鏈接”
4.在對話(huà)框的“鏈接輸入法”中選擇“查找文章”
5.采集 使用的接口來(lái)自這里
加我微信購買(mǎi)咨詢(xún),我的微信是:1124805587
querylist采集微信公眾號文章(如何采集微信文章?微信啄木鳥(niǎo)助手幫你采集二維碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 328 次瀏覽 ? 2021-10-26 15:26
除了公眾號,還提供公眾號。此外,可以通過(guò)微信公眾號采集數據。此外,它還可以采集標題、文章號、原文鏈接、閱讀號、積分、發(fā)布時(shí)間等數據。具體步驟如下:
1、采集需要采集的公共電話(huà)號碼列表。
2.將這些公眾號添加到清博指數的自定義列表中,
3、每天都會(huì )從公眾號獲取清晰的指數。注:如未查詢(xún)相關(guān)公眾號,需進(jìn)行入庫操作??晒┪⑿抛哪绝B(niǎo)助手使用,可用于word、PDF等多種格式,采集一種格式。會(huì )一直保存在微信公眾號里。
微信文章怎么采集?
謝謝
??!這個(gè)軟件就是MicroPort City,一個(gè)剛剛開(kāi)發(fā)出來(lái)的非常強大的軟件。主要通過(guò)采集二維碼和掃描群碼訪(fǎng)問(wèn)。軟件結合大數據、爬蟲(chóng)技術(shù)和圖像分析技術(shù),可以智能識別二維碼、檢測二維碼真偽、智能過(guò)濾重復二維碼、記憶查詢(xún)等功能,可以幫助您大大提高群組搜索效率,成功率組進(jìn)入率和組質(zhì)量。
通過(guò)五個(gè)渠道,我們可以采集所有公開(kāi)的、有效的、真實(shí)的、活躍的微信群。這10個(gè)二維碼中,大約有6-7個(gè)是有效的微信群,并且是實(shí)時(shí)更新的。一天可以采集近萬(wàn)個(gè)微信群,上萬(wàn)個(gè)微信群,二維碼,或特定群。一旦你設置了關(guān)鍵詞,你就可以開(kāi)始采集了。實(shí)時(shí)采集。軟件很強大,行業(yè)很廣。
如何采集微信文章?
作為新媒體運營(yíng)的小伙伴,每天需要同步很多文章。發(fā)送到微信的文章需要復制到頭條、短篇等平臺。但是,它不僅容易出現格式錯誤,而且復制的圖像也難以顯示。
這是一款可以一鍵發(fā)布文章多平臺的瀏覽器插件,支持同步到今日頭條、知乎、簡(jiǎn)書(shū)、掘金、CSDN等9個(gè)平臺。
使用時(shí)只需要安裝插件號即可。編輯完文章后,勾選同步平臺,系統會(huì )自動(dòng)將文章和圖片傳送到其他平臺,并保存為草稿供您進(jìn)一步編輯發(fā)布。這是非常省時(shí)和高效的。
插件也安裝好了,添加相關(guān)賬號即可使用。工作原理與上述插件類(lèi)似。填寫(xiě)要同步的文章鏈接,然后選擇同步平臺。
小曲是第一個(gè)常用的。如果你也找到了一個(gè)好用的一鍵同步平臺,請分享給我。
?、俎D發(fā)本文并關(guān)注@fun play
2.私信“一鍵發(fā)布”獲取以上插件 查看全部
querylist采集微信公眾號文章(如何采集微信文章?微信啄木鳥(niǎo)助手幫你采集二維碼)
除了公眾號,還提供公眾號。此外,可以通過(guò)微信公眾號采集數據。此外,它還可以采集標題、文章號、原文鏈接、閱讀號、積分、發(fā)布時(shí)間等數據。具體步驟如下:
1、采集需要采集的公共電話(huà)號碼列表。
2.將這些公眾號添加到清博指數的自定義列表中,
3、每天都會(huì )從公眾號獲取清晰的指數。注:如未查詢(xún)相關(guān)公眾號,需進(jìn)行入庫操作??晒┪⑿抛哪绝B(niǎo)助手使用,可用于word、PDF等多種格式,采集一種格式。會(huì )一直保存在微信公眾號里。
微信文章怎么采集?
謝謝
??!這個(gè)軟件就是MicroPort City,一個(gè)剛剛開(kāi)發(fā)出來(lái)的非常強大的軟件。主要通過(guò)采集二維碼和掃描群碼訪(fǎng)問(wèn)。軟件結合大數據、爬蟲(chóng)技術(shù)和圖像分析技術(shù),可以智能識別二維碼、檢測二維碼真偽、智能過(guò)濾重復二維碼、記憶查詢(xún)等功能,可以幫助您大大提高群組搜索效率,成功率組進(jìn)入率和組質(zhì)量。
通過(guò)五個(gè)渠道,我們可以采集所有公開(kāi)的、有效的、真實(shí)的、活躍的微信群。這10個(gè)二維碼中,大約有6-7個(gè)是有效的微信群,并且是實(shí)時(shí)更新的。一天可以采集近萬(wàn)個(gè)微信群,上萬(wàn)個(gè)微信群,二維碼,或特定群。一旦你設置了關(guān)鍵詞,你就可以開(kāi)始采集了。實(shí)時(shí)采集。軟件很強大,行業(yè)很廣。
如何采集微信文章?
作為新媒體運營(yíng)的小伙伴,每天需要同步很多文章。發(fā)送到微信的文章需要復制到頭條、短篇等平臺。但是,它不僅容易出現格式錯誤,而且復制的圖像也難以顯示。
這是一款可以一鍵發(fā)布文章多平臺的瀏覽器插件,支持同步到今日頭條、知乎、簡(jiǎn)書(shū)、掘金、CSDN等9個(gè)平臺。
使用時(shí)只需要安裝插件號即可。編輯完文章后,勾選同步平臺,系統會(huì )自動(dòng)將文章和圖片傳送到其他平臺,并保存為草稿供您進(jìn)一步編輯發(fā)布。這是非常省時(shí)和高效的。
插件也安裝好了,添加相關(guān)賬號即可使用。工作原理與上述插件類(lèi)似。填寫(xiě)要同步的文章鏈接,然后選擇同步平臺。
小曲是第一個(gè)常用的。如果你也找到了一個(gè)好用的一鍵同步平臺,請分享給我。
?、俎D發(fā)本文并關(guān)注@fun play
2.私信“一鍵發(fā)布”獲取以上插件
querylist采集微信公眾號文章( 《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2021-10-24 10:17
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
--------------------------------------------- 查看全部
querylist采集微信公眾號文章(
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))

一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
---------------------------------------------
querylist采集微信公眾號文章( 《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-10-23 11:09
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
--------------------------------------------- 查看全部
querylist采集微信公眾號文章(
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))

一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
---------------------------------------------
querylist采集微信公眾號文章( UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 292 次瀏覽 ? 2021-10-21 06:58
UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
大家好,我是小明。昨天,我在《UI自動(dòng)化工具輕松實(shí)現微信消息自動(dòng)收發(fā)和好友動(dòng)態(tài)爬取》一文中演示了三個(gè)UIAutomation的使用實(shí)例。鏈接:
由于昨天對UIAutomation的API的理解不夠全面,個(gè)人代碼優(yōu)化還有很大的空間。今天我們的目標是實(shí)現微信PC版聯(lián)系人信息列表的抓取,這將分別使用PyWinAuto和uiautomation來(lái)實(shí)現。通過(guò)對比,大家就會(huì )有更深入的了解。
PyWinAuto 實(shí)現
PyWinAuto 官方文檔地址:
將 PyWinAuto 連接到桌面程序有兩種主要方式:
它們是進(jìn)程的 pid 和窗口句柄。下面我將演示如何獲取微信的進(jìn)程id和窗口句柄。
根據進(jìn)程名獲取進(jìn)程ID:
import psutil
def get_pid(proc_name):
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == proc_name:
return proc.pid
%time get_pid("WeChat.exe")
Wall time: 224 ms
7268
根據窗口標題和類(lèi)名查找窗口句柄:
import win32gui
%time hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
hwnd
Wall time: 0 ns
264610
耗時(shí)幾乎為零,比之前的方法快了100多倍。
于是我用窗口句柄連接微信窗口:
import win32gui
from pywinauto.application import Application
hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
app = Application(backend='uia').connect(handle=hwnd)
app
自動(dòng)打開(kāi)通訊錄:
import pywinauto
win = app['微信']
txl_btn = win.child_window(title="通訊錄", control_type="Button")
txl_btn.draw_outline()
cords = txl_btn.rectangle()
pywinauto.mouse.click(button='left', coords=(
(cords.right+cords.left)//2, (cords.top+cords.bottom)//2))
隨機點(diǎn)擊好友信息詳情后,通過(guò)inspect.exe查看節點(diǎn)信息。
然后編寫(xiě)如下代碼,根據分析結果運行:
可以看到各種信息提取的很流暢,但是最多需要3.54秒,不一定比手動(dòng)復制粘貼快。這也是pywinauto的一個(gè)缺點(diǎn),太慢了。
下面我們進(jìn)行批量爬取。原理大致是每次讀取信息面板時(shí),按向下箭頭鍵,發(fā)現當前讀取的數據與上一次一致。認為爬行已經(jīng)結束。
由于pywinauto的爬取速度太慢,我手動(dòng)將好友列表拖到最后,然后運行如下代碼:
import pandas as pd
win = app['微信']
contacts = win.child_window(title="聯(lián)系人", control_type="List")
# 點(diǎn)擊第二個(gè)可見(jiàn)元素
contacts.children()[1].click_input()
result = []
last = None
num = 0
while 1:
tag = win.Edit2
tmp = tag.parent().parent()
nickname = tag.get_value()
# 跳過(guò)兩個(gè)官方號
if nickname in ["微信團隊", "文件傳輸助手"]:
contacts.type_keys("{DOWN}")
continue
detail = tmp.children()[-1]
whats_up = ""
if hasattr(detail, 'get_value'):
whats_up = detail.get_value()
elif hasattr(detail, 'window_text') and detail.window_text() != "":
# 這種情況說(shuō)明是企業(yè)微信,跳過(guò)
contacts.type_keys("{DOWN}")
continue
items = tmp.parent().parent().children()[2].children()
row = {"昵稱(chēng)": nickname, "個(gè)性簽名": whats_up}
for item in items:
lines = item.children()
k = lines[0].window_text()
v = lines[1].window_text()
row[k.replace(" ", "")] = v
if row == last:
# 與上一條數據一致則說(shuō)明已經(jīng)爬取完畢
break
result.append(row)
num += 1
print("\r", num, row,
end=" ")
last = row
contacts.type_keys("{DOWN}")
df = pd.DataFrame(result)
df
最后結果:
可以看出,最后一頁(yè)11個(gè)微信賬號的數據抓取耗時(shí)45秒。
ui自動(dòng)化實(shí)現
接下來(lái),我們將使用 uiautomation 來(lái)實(shí)現這種爬取。
獲取微信窗口,點(diǎn)擊通訊錄按鈕:
import uiautomation as auto
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
txl_btn = wechatWindow.ButtonControl(Name='通訊錄')
txl_btn.Click()
然后點(diǎn)擊云朵君的好友信息,測試好友信息抽?。?br />
?。ㄟ@個(gè)數字,你可以隨意添加)
wechatWindow.EditControl(searchDepth=10, foundIndex=2) 表示在10層節點(diǎn)內搜索第二個(gè)EditControl類(lèi)型節點(diǎn)(第一個(gè)是搜索框,第二個(gè)是朋友的昵稱(chēng))。
GetParentControl() 和 GetNextSiblingControl() 是昨天沒(méi)有使用的 API。它們用于獲取父節點(diǎn)和下一個(gè)兄弟節點(diǎn)。使用這兩個(gè) API 來(lái)重寫(xiě)昨天的 文章 的代碼,將使程序代碼變得簡(jiǎn)單和高效。改進(jìn)。
然后使用與 PyWinAuto 相同的方式進(jìn)行批量提?。?br /> 還要先測試最后一頁(yè)的數據:
爬取只用了 11 秒,比 PyWinAuto 快 4 倍。
所以我們可以批量提取所有微信好友的數據。最后,我這邊的700多個(gè)朋友用了10分鐘。雖然速度較慢,但??與 PyWinAuto 相比完全可以接受。
代碼對比
對于兩者,我都試圖遵循完全相同的邏輯。
win.Edit2 也得到第二個(gè) EditControl 類(lèi)型節點(diǎn),
type_keys 是 PyWinAuto 用來(lái)模擬擊鍵的 API,{DOWN} 代表向下的方向鍵。
PyWinAuto獲取父子節點(diǎn)的api都是小寫(xiě)的,沒(méi)有g(shù)et,uiautomation獲取父子節點(diǎn)的api大寫(xiě),前綴為Get。
對于 PyWinAuto 中的這行代碼:
items = tmp.parent().parent().children()[2].children()
使用 uiautomation:
items = tmp.GetParentControl().GetNextSiblingControl().GetNextSiblingControl().GetChildren()
有一個(gè)很大的不同。
這是因為我沒(méi)有找到PyWinAuto獲取兄弟節點(diǎn)的API,所以采用了先獲取父節點(diǎn)再獲取子節點(diǎn)的方法。
另外,判斷是否是企業(yè)微信的邏輯不同。PyWinAuto也需要在個(gè)性簽名為空時(shí)處理異常,否則程序會(huì )報錯退出。具體點(diǎn)需要大家去測試和體驗。
其他地方的邏輯幾乎相同。
總結
本文還演示了 PyWinAuto 和 uiautomation 讀取微信好友列表信息。通過(guò)對比,我們可以更深入地了解兩者的API用法。作為作者,我在實(shí)踐中有著(zhù)深刻的理解。只是文章中的代碼并沒(méi)有體現這些細節,具體的事情需要讀者在分析對比的過(guò)程中得到答案。僅僅看本文的代碼或許可以解決當前的需求,但是很難將本文涉及的技術(shù)應用到其他需求上。
童鞋們,讓我們通過(guò)動(dòng)手實(shí)踐來(lái)學(xué)習吧??學(xué)完之后,你會(huì )看到任何實(shí)現Automation Provider的桌面程序,并且可以爬~ 查看全部
querylist采集微信公眾號文章(
UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
大家好,我是小明。昨天,我在《UI自動(dòng)化工具輕松實(shí)現微信消息自動(dòng)收發(fā)和好友動(dòng)態(tài)爬取》一文中演示了三個(gè)UIAutomation的使用實(shí)例。鏈接:
由于昨天對UIAutomation的API的理解不夠全面,個(gè)人代碼優(yōu)化還有很大的空間。今天我們的目標是實(shí)現微信PC版聯(lián)系人信息列表的抓取,這將分別使用PyWinAuto和uiautomation來(lái)實(shí)現。通過(guò)對比,大家就會(huì )有更深入的了解。
PyWinAuto 實(shí)現
PyWinAuto 官方文檔地址:
將 PyWinAuto 連接到桌面程序有兩種主要方式:
它們是進(jìn)程的 pid 和窗口句柄。下面我將演示如何獲取微信的進(jìn)程id和窗口句柄。
根據進(jìn)程名獲取進(jìn)程ID:
import psutil
def get_pid(proc_name):
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == proc_name:
return proc.pid
%time get_pid("WeChat.exe")
Wall time: 224 ms
7268
根據窗口標題和類(lèi)名查找窗口句柄:
import win32gui
%time hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
hwnd
Wall time: 0 ns
264610
耗時(shí)幾乎為零,比之前的方法快了100多倍。
于是我用窗口句柄連接微信窗口:
import win32gui
from pywinauto.application import Application
hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
app = Application(backend='uia').connect(handle=hwnd)
app
自動(dòng)打開(kāi)通訊錄:
import pywinauto
win = app['微信']
txl_btn = win.child_window(title="通訊錄", control_type="Button")
txl_btn.draw_outline()
cords = txl_btn.rectangle()
pywinauto.mouse.click(button='left', coords=(
(cords.right+cords.left)//2, (cords.top+cords.bottom)//2))
隨機點(diǎn)擊好友信息詳情后,通過(guò)inspect.exe查看節點(diǎn)信息。
然后編寫(xiě)如下代碼,根據分析結果運行:

可以看到各種信息提取的很流暢,但是最多需要3.54秒,不一定比手動(dòng)復制粘貼快。這也是pywinauto的一個(gè)缺點(diǎn),太慢了。
下面我們進(jìn)行批量爬取。原理大致是每次讀取信息面板時(shí),按向下箭頭鍵,發(fā)現當前讀取的數據與上一次一致。認為爬行已經(jīng)結束。
由于pywinauto的爬取速度太慢,我手動(dòng)將好友列表拖到最后,然后運行如下代碼:
import pandas as pd
win = app['微信']
contacts = win.child_window(title="聯(lián)系人", control_type="List")
# 點(diǎn)擊第二個(gè)可見(jiàn)元素
contacts.children()[1].click_input()
result = []
last = None
num = 0
while 1:
tag = win.Edit2
tmp = tag.parent().parent()
nickname = tag.get_value()
# 跳過(guò)兩個(gè)官方號
if nickname in ["微信團隊", "文件傳輸助手"]:
contacts.type_keys("{DOWN}")
continue
detail = tmp.children()[-1]
whats_up = ""
if hasattr(detail, 'get_value'):
whats_up = detail.get_value()
elif hasattr(detail, 'window_text') and detail.window_text() != "":
# 這種情況說(shuō)明是企業(yè)微信,跳過(guò)
contacts.type_keys("{DOWN}")
continue
items = tmp.parent().parent().children()[2].children()
row = {"昵稱(chēng)": nickname, "個(gè)性簽名": whats_up}
for item in items:
lines = item.children()
k = lines[0].window_text()
v = lines[1].window_text()
row[k.replace(" ", "")] = v
if row == last:
# 與上一條數據一致則說(shuō)明已經(jīng)爬取完畢
break
result.append(row)
num += 1
print("\r", num, row,
end=" ")
last = row
contacts.type_keys("{DOWN}")
df = pd.DataFrame(result)
df
最后結果:

可以看出,最后一頁(yè)11個(gè)微信賬號的數據抓取耗時(shí)45秒。
ui自動(dòng)化實(shí)現
接下來(lái),我們將使用 uiautomation 來(lái)實(shí)現這種爬取。
獲取微信窗口,點(diǎn)擊通訊錄按鈕:
import uiautomation as auto
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
txl_btn = wechatWindow.ButtonControl(Name='通訊錄')
txl_btn.Click()
然后點(diǎn)擊云朵君的好友信息,測試好友信息抽?。?br />

?。ㄟ@個(gè)數字,你可以隨意添加)
wechatWindow.EditControl(searchDepth=10, foundIndex=2) 表示在10層節點(diǎn)內搜索第二個(gè)EditControl類(lèi)型節點(diǎn)(第一個(gè)是搜索框,第二個(gè)是朋友的昵稱(chēng))。
GetParentControl() 和 GetNextSiblingControl() 是昨天沒(méi)有使用的 API。它們用于獲取父節點(diǎn)和下一個(gè)兄弟節點(diǎn)。使用這兩個(gè) API 來(lái)重寫(xiě)昨天的 文章 的代碼,將使程序代碼變得簡(jiǎn)單和高效。改進(jìn)。
然后使用與 PyWinAuto 相同的方式進(jìn)行批量提?。?br /> 還要先測試最后一頁(yè)的數據:

爬取只用了 11 秒,比 PyWinAuto 快 4 倍。
所以我們可以批量提取所有微信好友的數據。最后,我這邊的700多個(gè)朋友用了10分鐘。雖然速度較慢,但??與 PyWinAuto 相比完全可以接受。
代碼對比

對于兩者,我都試圖遵循完全相同的邏輯。
win.Edit2 也得到第二個(gè) EditControl 類(lèi)型節點(diǎn),
type_keys 是 PyWinAuto 用來(lái)模擬擊鍵的 API,{DOWN} 代表向下的方向鍵。
PyWinAuto獲取父子節點(diǎn)的api都是小寫(xiě)的,沒(méi)有g(shù)et,uiautomation獲取父子節點(diǎn)的api大寫(xiě),前綴為Get。
對于 PyWinAuto 中的這行代碼:
items = tmp.parent().parent().children()[2].children()
使用 uiautomation:
items = tmp.GetParentControl().GetNextSiblingControl().GetNextSiblingControl().GetChildren()
有一個(gè)很大的不同。
這是因為我沒(méi)有找到PyWinAuto獲取兄弟節點(diǎn)的API,所以采用了先獲取父節點(diǎn)再獲取子節點(diǎn)的方法。
另外,判斷是否是企業(yè)微信的邏輯不同。PyWinAuto也需要在個(gè)性簽名為空時(shí)處理異常,否則程序會(huì )報錯退出。具體點(diǎn)需要大家去測試和體驗。
其他地方的邏輯幾乎相同。
總結
本文還演示了 PyWinAuto 和 uiautomation 讀取微信好友列表信息。通過(guò)對比,我們可以更深入地了解兩者的API用法。作為作者,我在實(shí)踐中有著(zhù)深刻的理解。只是文章中的代碼并沒(méi)有體現這些細節,具體的事情需要讀者在分析對比的過(guò)程中得到答案。僅僅看本文的代碼或許可以解決當前的需求,但是很難將本文涉及的技術(shù)應用到其他需求上。
童鞋們,讓我們通過(guò)動(dòng)手實(shí)踐來(lái)學(xué)習吧??學(xué)完之后,你會(huì )看到任何實(shí)現Automation Provider的桌面程序,并且可以爬~
querylist采集微信公眾號文章(如下如下工具程序利用的是微信公眾號 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2021-10-19 22:05
)
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們也需要有一個(gè)公眾號。
正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requests
url = "https://mp.weixin.qq.com/cgi-b ... ot%3B
requests.get(url).json()
# {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...
user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agent
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import json
import requests
import time
import random
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
# 請求參數
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
begin = "0"
params = {
"action": "list_ex",
"begin": begin,
"count": "5",
"fakeid": config['fakeid'],
"type": "9",
"token": config['token'],
"lang": "zh_CN",
"f": "json",
"ajax": "1"
}
# 存放結果
app_msg_list = []
# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句
# 也方便重新運行時(shí)設置頁(yè)數
i = 0
while True:
begin = i * 5
params["begin"] = str(begin)
# 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到
time.sleep(random.randint(1,10))
resp = requests.get(url, headers=headers, params = params, verify=False)
# 微信流量控制, 退出
if resp.json()['base_resp']['ret'] == 200013:
print("frequencey control, stop at {}".format(str(begin)))
break
# 如果返回的內容中為空則結束
if len(resp.json()['app_msg_list']) == 0:
print("all ariticle parsed")
break
app_msg_list.append(resp.json())
# 翻頁(yè)
i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為fakeid是每個(gè)公眾號的唯一標識,token會(huì )經(jīng)常變化,信息可以通過(guò)解析URL獲取,也可以從開(kāi)發(fā)者工具查看
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取我自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSON
json_name = "mp_data_{}.json".format(str(begin))
with open(json_name, "w") as file:
file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []
for msg in app_msg_list:
if "app_msg_list" in msg:
for item in msg["app_msg_list"]:
info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time']))
info_list.append(info)
# save as csv
with open("app_msg_list.csv", "w") as file:
file.writelines("n".join(info_list)) 查看全部
querylist采集微信公眾號文章(如下如下工具程序利用的是微信公眾號
)
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們也需要有一個(gè)公眾號。

正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。

接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )

此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))

這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的

我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requests
url = "https://mp.weixin.qq.com/cgi-b ... ot%3B
requests.get(url).json()
# {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...
user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agent
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import json
import requests
import time
import random
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
# 請求參數
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
begin = "0"
params = {
"action": "list_ex",
"begin": begin,
"count": "5",
"fakeid": config['fakeid'],
"type": "9",
"token": config['token'],
"lang": "zh_CN",
"f": "json",
"ajax": "1"
}
# 存放結果
app_msg_list = []
# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句
# 也方便重新運行時(shí)設置頁(yè)數
i = 0
while True:
begin = i * 5
params["begin"] = str(begin)
# 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到
time.sleep(random.randint(1,10))
resp = requests.get(url, headers=headers, params = params, verify=False)
# 微信流量控制, 退出
if resp.json()['base_resp']['ret'] == 200013:
print("frequencey control, stop at {}".format(str(begin)))
break
# 如果返回的內容中為空則結束
if len(resp.json()['app_msg_list']) == 0:
print("all ariticle parsed")
break
app_msg_list.append(resp.json())
# 翻頁(yè)
i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為fakeid是每個(gè)公眾號的唯一標識,token會(huì )經(jīng)常變化,信息可以通過(guò)解析URL獲取,也可以從開(kāi)發(fā)者工具查看

爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示

這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取我自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSON
json_name = "mp_data_{}.json".format(str(begin))
with open(json_name, "w") as file:
file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []
for msg in app_msg_list:
if "app_msg_list" in msg:
for item in msg["app_msg_list"]:
info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time']))
info_list.append(info)
# save as csv
with open("app_msg_list.csv", "w") as file:
file.writelines("n".join(info_list))
querylist采集微信公眾號文章(如何處理微信的防盜鏈?突破難點(diǎn)一操作擁有微信)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2021-10-19 22:03
突破難關(guān)一操作
擁有一個(gè)帶有登錄和注冊鏈接的微信個(gè)人訂閱帳戶(hù)。微信公眾平臺:
未注冊的童鞋可以通過(guò)微信公眾號進(jìn)行注冊。這個(gè)過(guò)程非常簡(jiǎn)單。
登錄后,點(diǎn)擊左側菜單欄的“管理”-“物料管理”。然后點(diǎn)擊右側的“新建圖形材質(zhì)”
會(huì )彈出一個(gè)新標簽頁(yè),在上方工具欄中找到“超鏈接”,點(diǎn)擊
彈出小窗口,選擇“查找文章”,輸入需要搜索的公眾號,以“宅基地”公眾號為例
點(diǎn)擊后可以彈出公眾號的所有歷史記錄文章
搜索可以獲取所有相關(guān)公眾號信息,但我只取第一個(gè)進(jìn)行測試,其他所有感興趣的人也可以獲得。
詳細信息請參考崔大神的文章,#rd
根據個(gè)人公眾號界面抓取
根據搜狗微信界面抓取
# -*- coding:utf-8 -*-
import requests,os,time,re
from urllib.parse import quote
from pyquery import PyQuery as pq
from selenium.webdriver import Chrome
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
# 這三行代碼是防止在python2上面編碼錯誤的,在python3上面不要要這樣設置
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
# 搜索入口地址,以公眾為關(guān)鍵字搜索該公眾號
def get_search_result_by_keywords(sogou_search_url):
# 爬蟲(chóng)偽裝頭部設置
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
# 設置操作超時(shí)時(shí)長(cháng)
timeout = 5
# 爬蟲(chóng)模擬在一個(gè)request.session中完成
s = requests.Session()
log(u'搜索地址為:%s' % sogou_search_url)
return s.get(sogou_search_url, headers=headers, timeout=timeout).content
# 獲得公眾號主頁(yè)地址
def get_wx_url_by_sougou_search_html(sougou_search_html):
doc = pq(sougou_search_html)
return doc('div[class=txt-box]')('p[class=tit]')('a').attr('href')
# 使用webdriver 加載公眾號主頁(yè)內容,主要是js渲染的部分
def get_selenium_js_html(url):
# browser = webdriver.PhantomJS(executable_path=r'D:\Python2.7\Scripts\phantomjs.exe')
options = Options()
options.add_argument('-headless') # 無(wú)頭參數
driver = Chrome(executable_path='chromedriver', chrome_options=options)
wait = WebDriverWait(driver, timeout=10)
driver.get(url)
time.sleep(3)
# 執行js得到整個(gè)頁(yè)面內容
html = driver.execute_script("return document.documentElement.outerHTML")
driver.close()
return html
# 獲取公眾號文章內容
def parse_wx_articles_by_html(selenium_html):
doc = pq(selenium_html)
return doc('div[class="weui_media_box appmsg"]')
# 將獲取到的文章轉換為字典
def switch_arctiles_to_list(articles):
# 定義存貯變量
articles_list = []
i = 1
# 遍歷找到的文章,解析里面的內容
if articles:
for article in articles.items():
log(u'開(kāi)始整合(%d/%d)' % (i, len(articles)))
# 處理單個(gè)文章
articles_list.append(parse_one_article(article))
i += 1
return articles_list
# 解析單篇文章
def parse_one_article(article):
article_dict = {}
# 獲取標題
title = article('h4[class="weui_media_title"]').text().strip()
###log(u'標題是: %s' % title)
# 獲取標題對應的地址
url = 'http://mp.weixin.qq.com' + article('h4[class="weui_media_title"]').attr('hrefs')
log(u'地址為: %s' % url)
# 獲取概要內容
summary = article('.weui_media_desc').text()
log(u'文章簡(jiǎn)述: %s' % summary)
# 獲取文章發(fā)表時(shí)間
date = article('.weui_media_extra_info').text().strip()
log(u'發(fā)表時(shí)間為: %s' % date)
# 獲取封面圖片
pic = parse_cover_pic(article)
# 返回字典數據
return {
'title': title,
'url': url,
'summary': summary,
'date': date,
'pic': pic
}
# 查找封面圖片,獲取封面圖片地址
def parse_cover_pic(article):
pic = article('.weui_media_hd').attr('style')
p = re.compile(r'background-image:url\((.*?)\)')
rs = p.findall(pic)
log(u'封面圖片是:%s ' % rs[0] if len(rs) > 0 else '')
return rs[0] if len(rs) > 0 else ''
# 自定義log函數,主要是加上時(shí)間
def log(msg):
print(u'%s: %s' % (time.strftime('%Y-%m-%d_%H-%M-%S'), msg))
# 驗證函數
def need_verify(selenium_html):
' 有時(shí)候對方會(huì )封鎖ip,這里做一下判斷,檢測html中是否包含id=verify_change的標簽,有的話(huà),代表被重定向了,提醒過(guò)一陣子重試 '
return pq(selenium_html)('#verify_change').text() != ''
# 創(chuàng )建公眾號命名的文件夾
def create_dir(keywords):
if not os.path.exists(keywords):
os.makedirs(keywords)
def run(keywords):
' 爬蟲(chóng)入口函數 '
# Step 0 : 創(chuàng )建公眾號命名的文件夾
create_dir(keywords)
# 搜狐微信搜索鏈接入口
sogou_search_url = 'http://weixin.sogou.com/weixin ... 39%3B % quote(keywords)
# Step 1:GET請求到搜狗微信引擎,以微信公眾號英文名稱(chēng)作為查詢(xún)關(guān)鍵字
log(u'開(kāi)始獲取,微信公眾號英文名為:%s' % keywords)
log(u'開(kāi)始調用sougou搜索引擎')
sougou_search_html = get_search_result_by_keywords(sogou_search_url)
# Step 2:從搜索結果頁(yè)中解析出公眾號主頁(yè)鏈接
log(u'獲取sougou_search_html成功,開(kāi)始抓取公眾號對應的主頁(yè)wx_url')
wx_url = get_wx_url_by_sougou_search_html(sougou_search_html)
log(u'獲取wx_url成功,%s' % wx_url)
# Step 3:Selenium+PhantomJs獲取js異步加載渲染后的html
log(u'開(kāi)始調用selenium渲染html')
selenium_html = get_selenium_js_html(wx_url)
# Step 4: 檢測目標網(wǎng)站是否進(jìn)行了封鎖
if need_verify(selenium_html):
log(u'爬蟲(chóng)被目標網(wǎng)站封鎖,請稍后再試')
else:
# Step 5: 使用PyQuery,從Step 3獲取的html中解析出公眾號文章列表的數據
log(u'調用selenium渲染html完成,開(kāi)始解析公眾號文章')
articles = parse_wx_articles_by_html(selenium_html)
log(u'抓取到微信文章%d篇' % len(articles))
# Step 6: 把微信文章數據封裝成字典的list
log(u'開(kāi)始整合微信文章數據為字典')
articles_list = switch_arctiles_to_list(articles)
return [content['title'] for content in articles_list]
if __name__ == '__main__':
gongzhonghao = input(u'input weixin gongzhonghao:')
if not gongzhonghao:
gongzhonghao = 'spider'
text = " ".join(run(gongzhonghao))
print(text)
直接運行main方法,在控制臺輸入你要爬的公眾號的英文名。中文可能不止一個(gè)。精確搜索在這里完成,只找到一個(gè)。查看英文公眾號,點(diǎn)擊手機即可。公眾號然后查看公眾號信息
防水蛭
微信公眾號已經(jīng)對文章中的圖片做了防盜鏈處理,所以如果圖片在公眾號、小程序、PC瀏覽器以外的地方無(wú)法顯示,建議您閱讀這篇文章< @文章學(xué)習如何應對微信的反水蛭。
參考: 查看全部
querylist采集微信公眾號文章(如何處理微信的防盜鏈?突破難點(diǎn)一操作擁有微信)
突破難關(guān)一操作
擁有一個(gè)帶有登錄和注冊鏈接的微信個(gè)人訂閱帳戶(hù)。微信公眾平臺:
未注冊的童鞋可以通過(guò)微信公眾號進(jìn)行注冊。這個(gè)過(guò)程非常簡(jiǎn)單。
登錄后,點(diǎn)擊左側菜單欄的“管理”-“物料管理”。然后點(diǎn)擊右側的“新建圖形材質(zhì)”
會(huì )彈出一個(gè)新標簽頁(yè),在上方工具欄中找到“超鏈接”,點(diǎn)擊
彈出小窗口,選擇“查找文章”,輸入需要搜索的公眾號,以“宅基地”公眾號為例
點(diǎn)擊后可以彈出公眾號的所有歷史記錄文章
搜索可以獲取所有相關(guān)公眾號信息,但我只取第一個(gè)進(jìn)行測試,其他所有感興趣的人也可以獲得。
詳細信息請參考崔大神的文章,#rd
根據個(gè)人公眾號界面抓取
根據搜狗微信界面抓取
# -*- coding:utf-8 -*-
import requests,os,time,re
from urllib.parse import quote
from pyquery import PyQuery as pq
from selenium.webdriver import Chrome
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
# 這三行代碼是防止在python2上面編碼錯誤的,在python3上面不要要這樣設置
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
# 搜索入口地址,以公眾為關(guān)鍵字搜索該公眾號
def get_search_result_by_keywords(sogou_search_url):
# 爬蟲(chóng)偽裝頭部設置
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
# 設置操作超時(shí)時(shí)長(cháng)
timeout = 5
# 爬蟲(chóng)模擬在一個(gè)request.session中完成
s = requests.Session()
log(u'搜索地址為:%s' % sogou_search_url)
return s.get(sogou_search_url, headers=headers, timeout=timeout).content
# 獲得公眾號主頁(yè)地址
def get_wx_url_by_sougou_search_html(sougou_search_html):
doc = pq(sougou_search_html)
return doc('div[class=txt-box]')('p[class=tit]')('a').attr('href')
# 使用webdriver 加載公眾號主頁(yè)內容,主要是js渲染的部分
def get_selenium_js_html(url):
# browser = webdriver.PhantomJS(executable_path=r'D:\Python2.7\Scripts\phantomjs.exe')
options = Options()
options.add_argument('-headless') # 無(wú)頭參數
driver = Chrome(executable_path='chromedriver', chrome_options=options)
wait = WebDriverWait(driver, timeout=10)
driver.get(url)
time.sleep(3)
# 執行js得到整個(gè)頁(yè)面內容
html = driver.execute_script("return document.documentElement.outerHTML")
driver.close()
return html
# 獲取公眾號文章內容
def parse_wx_articles_by_html(selenium_html):
doc = pq(selenium_html)
return doc('div[class="weui_media_box appmsg"]')
# 將獲取到的文章轉換為字典
def switch_arctiles_to_list(articles):
# 定義存貯變量
articles_list = []
i = 1
# 遍歷找到的文章,解析里面的內容
if articles:
for article in articles.items():
log(u'開(kāi)始整合(%d/%d)' % (i, len(articles)))
# 處理單個(gè)文章
articles_list.append(parse_one_article(article))
i += 1
return articles_list
# 解析單篇文章
def parse_one_article(article):
article_dict = {}
# 獲取標題
title = article('h4[class="weui_media_title"]').text().strip()
###log(u'標題是: %s' % title)
# 獲取標題對應的地址
url = 'http://mp.weixin.qq.com' + article('h4[class="weui_media_title"]').attr('hrefs')
log(u'地址為: %s' % url)
# 獲取概要內容
summary = article('.weui_media_desc').text()
log(u'文章簡(jiǎn)述: %s' % summary)
# 獲取文章發(fā)表時(shí)間
date = article('.weui_media_extra_info').text().strip()
log(u'發(fā)表時(shí)間為: %s' % date)
# 獲取封面圖片
pic = parse_cover_pic(article)
# 返回字典數據
return {
'title': title,
'url': url,
'summary': summary,
'date': date,
'pic': pic
}
# 查找封面圖片,獲取封面圖片地址
def parse_cover_pic(article):
pic = article('.weui_media_hd').attr('style')
p = re.compile(r'background-image:url\((.*?)\)')
rs = p.findall(pic)
log(u'封面圖片是:%s ' % rs[0] if len(rs) > 0 else '')
return rs[0] if len(rs) > 0 else ''
# 自定義log函數,主要是加上時(shí)間
def log(msg):
print(u'%s: %s' % (time.strftime('%Y-%m-%d_%H-%M-%S'), msg))
# 驗證函數
def need_verify(selenium_html):
' 有時(shí)候對方會(huì )封鎖ip,這里做一下判斷,檢測html中是否包含id=verify_change的標簽,有的話(huà),代表被重定向了,提醒過(guò)一陣子重試 '
return pq(selenium_html)('#verify_change').text() != ''
# 創(chuàng )建公眾號命名的文件夾
def create_dir(keywords):
if not os.path.exists(keywords):
os.makedirs(keywords)
def run(keywords):
' 爬蟲(chóng)入口函數 '
# Step 0 : 創(chuàng )建公眾號命名的文件夾
create_dir(keywords)
# 搜狐微信搜索鏈接入口
sogou_search_url = 'http://weixin.sogou.com/weixin ... 39%3B % quote(keywords)
# Step 1:GET請求到搜狗微信引擎,以微信公眾號英文名稱(chēng)作為查詢(xún)關(guān)鍵字
log(u'開(kāi)始獲取,微信公眾號英文名為:%s' % keywords)
log(u'開(kāi)始調用sougou搜索引擎')
sougou_search_html = get_search_result_by_keywords(sogou_search_url)
# Step 2:從搜索結果頁(yè)中解析出公眾號主頁(yè)鏈接
log(u'獲取sougou_search_html成功,開(kāi)始抓取公眾號對應的主頁(yè)wx_url')
wx_url = get_wx_url_by_sougou_search_html(sougou_search_html)
log(u'獲取wx_url成功,%s' % wx_url)
# Step 3:Selenium+PhantomJs獲取js異步加載渲染后的html
log(u'開(kāi)始調用selenium渲染html')
selenium_html = get_selenium_js_html(wx_url)
# Step 4: 檢測目標網(wǎng)站是否進(jìn)行了封鎖
if need_verify(selenium_html):
log(u'爬蟲(chóng)被目標網(wǎng)站封鎖,請稍后再試')
else:
# Step 5: 使用PyQuery,從Step 3獲取的html中解析出公眾號文章列表的數據
log(u'調用selenium渲染html完成,開(kāi)始解析公眾號文章')
articles = parse_wx_articles_by_html(selenium_html)
log(u'抓取到微信文章%d篇' % len(articles))
# Step 6: 把微信文章數據封裝成字典的list
log(u'開(kāi)始整合微信文章數據為字典')
articles_list = switch_arctiles_to_list(articles)
return [content['title'] for content in articles_list]
if __name__ == '__main__':
gongzhonghao = input(u'input weixin gongzhonghao:')
if not gongzhonghao:
gongzhonghao = 'spider'
text = " ".join(run(gongzhonghao))
print(text)
直接運行main方法,在控制臺輸入你要爬的公眾號的英文名。中文可能不止一個(gè)。精確搜索在這里完成,只找到一個(gè)。查看英文公眾號,點(diǎn)擊手機即可。公眾號然后查看公眾號信息
防水蛭
微信公眾號已經(jīng)對文章中的圖片做了防盜鏈處理,所以如果圖片在公眾號、小程序、PC瀏覽器以外的地方無(wú)法顯示,建議您閱讀這篇文章< @文章學(xué)習如何應對微信的反水蛭。
參考:
querylist采集微信公眾號文章(Excel教程Excel函數Excel表格制作Excel2010Excel實(shí)用技巧Excel視頻教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-10-19 15:01
querylist采集微信公眾號文章分類(lèi)的網(wǎng)頁(yè)數據,不用爬蟲(chóng)(tornado,python等),golang,支持一些可視化的交互設計,nodejs等(同時(shí),這篇文章是代碼,需要預先安裝nodejs)網(wǎng)頁(yè)端爬取,使用tornado,同時(shí)有網(wǎng)頁(yè)的分析api,類(lèi)似spyder,不過(guò)它是web平臺。微信公眾號文章分類(lèi)采集接入tornado中要說(shuō)到http的請求,并不需要注冊帳號,必須在瀏覽器上輸入網(wǎng)址然后才能操作,先從網(wǎng)頁(yè)抓取開(kāi)始,可以通過(guò)http請求->》響應網(wǎng)頁(yè)->》點(diǎn)擊分類(lèi)查看我們通過(guò)tornado抓取了taro_spider.js這個(gè)頁(yè)面,采集到包含60個(gè)微信公眾號文章類(lèi)別的網(wǎng)頁(yè)數據,需要編寫(xiě)如下代碼:httprequest->connect("")->從瀏覽器中提交到encoder.py中,接著(zhù)就有了以下代碼:1.post和get請求發(fā)送請求發(fā)送post請求,soeasy!//connectmesocute,${touchable}httprequest->connect(""),meme!//connectmeme!//get請求發(fā)送get請求,同樣發(fā)送到taro.py中,并且發(fā)送后端!//connectmeme!//post請求中accept:json,post:['accept-encoding','gzip,deflate','bytes0xffff']httprequest->connect("")->在taro.py中taro_spider.js與http相關(guān)的代碼應該在anacondauseragent中,在我實(shí)際項目中,taro_spider.js相當于python的pipinstalllxml;forlxmlinenumerate(${lxml}):printlxml.load(lxml)所以,post請求發(fā)送的是數據接收者,taro_spider.js等同于lxml。
接著(zhù),我們要操作taro_spider.js,進(jìn)行http請求、響應處理,然后接著(zhù)我們要運行指定路徑下的.py程序并運行這個(gè)程序,最后我們采用自己的服務(wù)器自己的httpserver去請求就可以。2.請求體處理使用get發(fā)送請求,如果不加上#!/usr/bin/envpython#-*-coding:utf-8-*-importjsonimportthreadingimportstructdefpost(url):"""post請求發(fā)送到to_header=':'name='to_name'accept='gzip,deflate'content-type='application/x-www-form-urlencoded'"""returnjson.loads(url.replace('/','').text)returnthreading.thread(target=struct.pool,policy=struct.pool)defconnect(host):"""調用一下connect(),然后post請求一下"""host=threading.pool()host.setdefaulthost('。 查看全部
querylist采集微信公眾號文章(Excel教程Excel函數Excel表格制作Excel2010Excel實(shí)用技巧Excel視頻教程)
querylist采集微信公眾號文章分類(lèi)的網(wǎng)頁(yè)數據,不用爬蟲(chóng)(tornado,python等),golang,支持一些可視化的交互設計,nodejs等(同時(shí),這篇文章是代碼,需要預先安裝nodejs)網(wǎng)頁(yè)端爬取,使用tornado,同時(shí)有網(wǎng)頁(yè)的分析api,類(lèi)似spyder,不過(guò)它是web平臺。微信公眾號文章分類(lèi)采集接入tornado中要說(shuō)到http的請求,并不需要注冊帳號,必須在瀏覽器上輸入網(wǎng)址然后才能操作,先從網(wǎng)頁(yè)抓取開(kāi)始,可以通過(guò)http請求->》響應網(wǎng)頁(yè)->》點(diǎn)擊分類(lèi)查看我們通過(guò)tornado抓取了taro_spider.js這個(gè)頁(yè)面,采集到包含60個(gè)微信公眾號文章類(lèi)別的網(wǎng)頁(yè)數據,需要編寫(xiě)如下代碼:httprequest->connect("")->從瀏覽器中提交到encoder.py中,接著(zhù)就有了以下代碼:1.post和get請求發(fā)送請求發(fā)送post請求,soeasy!//connectmesocute,${touchable}httprequest->connect(""),meme!//connectmeme!//get請求發(fā)送get請求,同樣發(fā)送到taro.py中,并且發(fā)送后端!//connectmeme!//post請求中accept:json,post:['accept-encoding','gzip,deflate','bytes0xffff']httprequest->connect("")->在taro.py中taro_spider.js與http相關(guān)的代碼應該在anacondauseragent中,在我實(shí)際項目中,taro_spider.js相當于python的pipinstalllxml;forlxmlinenumerate(${lxml}):printlxml.load(lxml)所以,post請求發(fā)送的是數據接收者,taro_spider.js等同于lxml。
接著(zhù),我們要操作taro_spider.js,進(jìn)行http請求、響應處理,然后接著(zhù)我們要運行指定路徑下的.py程序并運行這個(gè)程序,最后我們采用自己的服務(wù)器自己的httpserver去請求就可以。2.請求體處理使用get發(fā)送請求,如果不加上#!/usr/bin/envpython#-*-coding:utf-8-*-importjsonimportthreadingimportstructdefpost(url):"""post請求發(fā)送到to_header=':'name='to_name'accept='gzip,deflate'content-type='application/x-www-form-urlencoded'"""returnjson.loads(url.replace('/','').text)returnthreading.thread(target=struct.pool,policy=struct.pool)defconnect(host):"""調用一下connect(),然后post請求一下"""host=threading.pool()host.setdefaulthost('。
querylist采集微信公眾號文章( 微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 205 次瀏覽 ? 2021-10-19 10:25
微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))
微信閱讀App上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊。
鈦媒體編輯今天點(diǎn)擊微信閱讀App主界面左下角的書(shū)店,彈出了“優(yōu)質(zhì)公眾號”模塊。
在“查看全部”內容列表中,鈦媒體發(fā)現該模塊分為8個(gè)子模塊:“全部”、“輕松搞笑”、“影評”、“文學(xué)雜志”、“互聯(lián)網(wǎng)”、“知識教育” ”、“商業(yè)金融”和“其他”。而在每個(gè)子模塊中,都有來(lái)自微信公眾平臺文章的各個(gè)自媒體賬號的收錄。
另外,通過(guò)微信閱讀App搜索欄,可以直接搜索相關(guān)公眾號和內容。
事實(shí)上,今年4月,微信閱讀2.4.0就已經(jīng)加入了一個(gè)新功能:引入優(yōu)質(zhì)公眾號。
而馬化騰去年在朋友圈與kol的對話(huà)中也透露,微信正在內部測試公眾號的付費訂閱功能。此后,一直沒(méi)有消息表明該功能何時(shí)正式發(fā)布。
微信閱讀App的自然付費閱讀模式與微信公眾號付費閱讀自然匹配。不過(guò),微信閱讀App中的優(yōu)質(zhì)公眾號模塊依然可以免費閱讀。
鈦媒體發(fā)現,這并不是微信閱讀和微信公眾號的第一次結合。早在去年9月2.2.0版本上線(xiàn)時(shí),就已經(jīng)出現了“支持看書(shū)”公眾號文章”的提示。
關(guān)于新功能,鈦媒體小編采訪(fǎng)了幾家公眾號運營(yíng)商,發(fā)現微信閱讀沒(méi)有事先就授權和版權問(wèn)題與運營(yíng)商溝通。
本次我們將直接抓取微信公眾號中的文章,作為獨立版塊使用。以后會(huì )不會(huì )涉及版權問(wèn)題?
從目前的功能來(lái)看,微信閱讀App看起來(lái)是一個(gè)完美的“接現成孩子”的過(guò)程。同時(shí)在搜索一些不知名的公眾號時(shí),發(fā)現系統并沒(méi)有收錄??梢钥闯?,“優(yōu)質(zhì)公眾號”是在微信閱讀相關(guān)數據庫篩選后導入的。
據了解,微信閱讀App于2015年8月27日正式上線(xiàn),目前華為應用商店下載量超過(guò)1億。龐大的流量平臺未來(lái)將如何與微信公眾號運營(yíng)商分享收益?值得期待。(本文首發(fā)于鈦媒體,作者/桑明強,編輯/叢聰) 查看全部
querylist采集微信公眾號文章(
微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))

微信閱讀App上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊。
鈦媒體編輯今天點(diǎn)擊微信閱讀App主界面左下角的書(shū)店,彈出了“優(yōu)質(zhì)公眾號”模塊。
在“查看全部”內容列表中,鈦媒體發(fā)現該模塊分為8個(gè)子模塊:“全部”、“輕松搞笑”、“影評”、“文學(xué)雜志”、“互聯(lián)網(wǎng)”、“知識教育” ”、“商業(yè)金融”和“其他”。而在每個(gè)子模塊中,都有來(lái)自微信公眾平臺文章的各個(gè)自媒體賬號的收錄。

另外,通過(guò)微信閱讀App搜索欄,可以直接搜索相關(guān)公眾號和內容。
事實(shí)上,今年4月,微信閱讀2.4.0就已經(jīng)加入了一個(gè)新功能:引入優(yōu)質(zhì)公眾號。
而馬化騰去年在朋友圈與kol的對話(huà)中也透露,微信正在內部測試公眾號的付費訂閱功能。此后,一直沒(méi)有消息表明該功能何時(shí)正式發(fā)布。
微信閱讀App的自然付費閱讀模式與微信公眾號付費閱讀自然匹配。不過(guò),微信閱讀App中的優(yōu)質(zhì)公眾號模塊依然可以免費閱讀。
鈦媒體發(fā)現,這并不是微信閱讀和微信公眾號的第一次結合。早在去年9月2.2.0版本上線(xiàn)時(shí),就已經(jīng)出現了“支持看書(shū)”公眾號文章”的提示。
關(guān)于新功能,鈦媒體小編采訪(fǎng)了幾家公眾號運營(yíng)商,發(fā)現微信閱讀沒(méi)有事先就授權和版權問(wèn)題與運營(yíng)商溝通。
本次我們將直接抓取微信公眾號中的文章,作為獨立版塊使用。以后會(huì )不會(huì )涉及版權問(wèn)題?
從目前的功能來(lái)看,微信閱讀App看起來(lái)是一個(gè)完美的“接現成孩子”的過(guò)程。同時(shí)在搜索一些不知名的公眾號時(shí),發(fā)現系統并沒(méi)有收錄??梢钥闯?,“優(yōu)質(zhì)公眾號”是在微信閱讀相關(guān)數據庫篩選后導入的。

據了解,微信閱讀App于2015年8月27日正式上線(xiàn),目前華為應用商店下載量超過(guò)1億。龐大的流量平臺未來(lái)將如何與微信公眾號運營(yíng)商分享收益?值得期待。(本文首發(fā)于鈦媒體,作者/桑明強,編輯/叢聰)
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 199 次瀏覽 ? 2021-10-19 02:02
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面
從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面


從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 207 次瀏覽 ? 2021-10-18 08:08
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面
從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,只需用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面


從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,只需用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。
querylist采集微信公眾號文章( 小編來(lái)一起獲取微信公眾號文章的方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 210 次瀏覽 ? 2021-10-10 09:18
小編來(lái)一起獲取微信公眾號文章的方法)
微信公眾平臺獲取公眾號文章示例
更新時(shí)間:2019年12月25日09:45:38 作者:考古學(xué)家lx
本文文章主要介紹如何通過(guò)微信公眾平臺獲取公眾號文章的例子。文章中介紹的示例代碼非常詳細,對大家的學(xué)習或工作有一定的參考學(xué)習價(jià)值。小伙伴們和小編一起學(xué)習吧
之前一直自己維護一個(gè)公眾號,但是因為個(gè)人關(guān)系好久沒(méi)有更新,今天才上來(lái)想起來(lái),卻偶然發(fā)現了微信公眾號文章的獲取方式。
之前獲取的方式很多,通過(guò)搜狗、清博、web、客戶(hù)端等都可以,這個(gè)可能不太好,但是操作簡(jiǎn)單易懂。
所以,首先你需要在微信公眾平臺上有一個(gè)賬號
微信公眾平臺:
登錄后,進(jìn)入首頁(yè),點(diǎn)擊新建群發(fā)。
選擇自創(chuàng )圖形:
好像是公眾號操作教學(xué)
進(jìn)入編輯頁(yè)面后,點(diǎn)擊超鏈接
彈出一個(gè)選擇框,我們在框中輸入對應的公眾號名稱(chēng),就會(huì )出現對應的文章列表
你驚喜嗎?您可以打開(kāi)控制臺并檢查請求的界面
打開(kāi)回復,里面有我們需要的文章鏈接
確認數據后,我們需要對這個(gè)界面進(jìn)行分析。
感覺(jué)非常簡(jiǎn)單。GET 請求攜帶一些參數。
Fakeid是公眾號的唯一ID,所以如果想直接通過(guò)名字獲取文章列表,還需要先獲取fakeid。
當我們輸入官方賬號名稱(chēng)時(shí),點(diǎn)擊搜索??梢钥吹剿阉鹘缑姹挥|發(fā),返回fakeid。
這個(gè)接口需要的參數不多。
接下來(lái)我們就可以用代碼來(lái)模擬上面的操作了。
但是您還需要使用現有的 cookie 來(lái)避免登錄。
目前,我還沒(méi)有測試過(guò)cookie的有效期??赡苄枰皶r(shí)更新 cookie。
測試代碼:
import requests
import json
Cookie = '請換上自己的Cookie,獲取方法:直接復制下來(lái)'
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
headers = {
"Cookie": Cookie,
"User-Agent": 'Mozilla/5.0 (Linux; Android 10; YAL-AL00 Build/HUAWEIYAL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 HuaweiBrowser/10.0.1.335 Mobile Safari/537.36'
}
keyword = 'pythonlx' # 公眾號名字:可自定義
token = '你的token' # 獲取方法:如上述 直接復制下來(lái)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={}&token={}&lang=zh_CN&f=json&ajax=1'.format(keyword,token)
doc = requests.get(search_url,headers=headers).text
jstext = json.loads(doc)
fakeid = jstext['list'][0]['fakeid']
data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"begin": 0,
"count": "5",
"query": "",
"fakeid": fakeid,
"type": "9",
}
json_test = requests.get(url, headers=headers, params=data).text
json_test = json.loads(json_test)
print(json_test)
這樣就可以得到最新的10個(gè)文章。如果想獲取更多歷史記錄文章,可以修改數據中的“begin”參數,0為第一頁(yè),5為第二頁(yè),10為第三頁(yè)(以此類(lèi)推)
但是如果你想大規模爬行:
請自己安排一個(gè)穩定的代理,降低爬蟲(chóng)速度,準備多個(gè)賬號,減少被封的可能性。
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。 查看全部
querylist采集微信公眾號文章(
小編來(lái)一起獲取微信公眾號文章的方法)
微信公眾平臺獲取公眾號文章示例
更新時(shí)間:2019年12月25日09:45:38 作者:考古學(xué)家lx
本文文章主要介紹如何通過(guò)微信公眾平臺獲取公眾號文章的例子。文章中介紹的示例代碼非常詳細,對大家的學(xué)習或工作有一定的參考學(xué)習價(jià)值。小伙伴們和小編一起學(xué)習吧
之前一直自己維護一個(gè)公眾號,但是因為個(gè)人關(guān)系好久沒(méi)有更新,今天才上來(lái)想起來(lái),卻偶然發(fā)現了微信公眾號文章的獲取方式。
之前獲取的方式很多,通過(guò)搜狗、清博、web、客戶(hù)端等都可以,這個(gè)可能不太好,但是操作簡(jiǎn)單易懂。
所以,首先你需要在微信公眾平臺上有一個(gè)賬號
微信公眾平臺:

登錄后,進(jìn)入首頁(yè),點(diǎn)擊新建群發(fā)。

選擇自創(chuàng )圖形:

好像是公眾號操作教學(xué)
進(jìn)入編輯頁(yè)面后,點(diǎn)擊超鏈接

彈出一個(gè)選擇框,我們在框中輸入對應的公眾號名稱(chēng),就會(huì )出現對應的文章列表

你驚喜嗎?您可以打開(kāi)控制臺并檢查請求的界面

打開(kāi)回復,里面有我們需要的文章鏈接

確認數據后,我們需要對這個(gè)界面進(jìn)行分析。
感覺(jué)非常簡(jiǎn)單。GET 請求攜帶一些參數。

Fakeid是公眾號的唯一ID,所以如果想直接通過(guò)名字獲取文章列表,還需要先獲取fakeid。
當我們輸入官方賬號名稱(chēng)時(shí),點(diǎn)擊搜索??梢钥吹剿阉鹘缑姹挥|發(fā),返回fakeid。

這個(gè)接口需要的參數不多。

接下來(lái)我們就可以用代碼來(lái)模擬上面的操作了。
但是您還需要使用現有的 cookie 來(lái)避免登錄。

目前,我還沒(méi)有測試過(guò)cookie的有效期??赡苄枰皶r(shí)更新 cookie。
測試代碼:
import requests
import json
Cookie = '請換上自己的Cookie,獲取方法:直接復制下來(lái)'
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
headers = {
"Cookie": Cookie,
"User-Agent": 'Mozilla/5.0 (Linux; Android 10; YAL-AL00 Build/HUAWEIYAL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 HuaweiBrowser/10.0.1.335 Mobile Safari/537.36'
}
keyword = 'pythonlx' # 公眾號名字:可自定義
token = '你的token' # 獲取方法:如上述 直接復制下來(lái)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={}&token={}&lang=zh_CN&f=json&ajax=1'.format(keyword,token)
doc = requests.get(search_url,headers=headers).text
jstext = json.loads(doc)
fakeid = jstext['list'][0]['fakeid']
data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"begin": 0,
"count": "5",
"query": "",
"fakeid": fakeid,
"type": "9",
}
json_test = requests.get(url, headers=headers, params=data).text
json_test = json.loads(json_test)
print(json_test)
這樣就可以得到最新的10個(gè)文章。如果想獲取更多歷史記錄文章,可以修改數據中的“begin”參數,0為第一頁(yè),5為第二頁(yè),10為第三頁(yè)(以此類(lèi)推)
但是如果你想大規模爬行:
請自己安排一個(gè)穩定的代理,降低爬蟲(chóng)速度,準備多個(gè)賬號,減少被封的可能性。
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
querylist采集微信公眾號文章(微信公眾號后臺編輯素材界面的程序利用程序 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 197 次瀏覽 ? 2021-10-07 16:19
)
準備階段
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們還需要有一個(gè)公眾號。
圖1正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。
圖2
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )
圖3
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))
圖4
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的
圖5
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requestsurl = "https://mp.weixin.qq.com/cgi-b ... s.get(url).json() # {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agentimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
?
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
?
圖 6 ?
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
?
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import jsonimport requestsimport timeimport randomimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }# 請求參數url = "https://mp.weixin.qq.com/cgi-bin/appmsg"begin = "0"params = { "action": "list_ex", "begin": begin, "count": "5", "fakeid": config['fakeid'], "type": "9", "token": config['token'], "lang": "zh_CN", "f": "json", "ajax": "1"}# 存放結果app_msg_list = []# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句# 也方便重新運行時(shí)設置頁(yè)數i = 0while True: begin = i * 5 params["begin"] = str(begin) # 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到 time.sleep(random.randint(1,10)) resp = requests.get(url, headers=headers, params = params, verify=False) # 微信流量控制, 退出 if resp.json()['base_resp']['ret'] == 200013: print("frequencey control, stop at {}".format(str(begin))) break # 如果返回的內容中為空則結束 if len(resp.json()['app_msg_list']) == 0: print("all ariticle parsed") break app_msg_list.append(resp.json()) # 翻頁(yè) i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為 fakeid 是每個(gè)公眾號的唯一標識符,令牌會(huì )經(jīng)常變化。這個(gè)信息可以通過(guò) Parse URL 來(lái)獲取,也可以從開(kāi)發(fā)者工具中查看
圖7
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示
圖8
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSONjson_name = "mp_data_{}.json".format(str(begin))with open(json_name, "w") as file: file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []for msg in app_msg_list: if "app_msg_list" in msg: for item in msg["app_msg_list"]: info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time'])) info_list.append(info)# save as csvwith open("app_msg_list.csv", "w") as file: file.writelines("\n".join(info_list)) 查看全部
querylist采集微信公眾號文章(微信公眾號后臺編輯素材界面的程序利用程序
)
準備階段
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們還需要有一個(gè)公眾號。

圖1正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。

圖2
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )

圖3
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))

圖4
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的

圖5
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requestsurl = "https://mp.weixin.qq.com/cgi-b ... s.get(url).json() # {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agentimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
?
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
?

圖 6 ?
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
?
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import jsonimport requestsimport timeimport randomimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }# 請求參數url = "https://mp.weixin.qq.com/cgi-bin/appmsg"begin = "0"params = { "action": "list_ex", "begin": begin, "count": "5", "fakeid": config['fakeid'], "type": "9", "token": config['token'], "lang": "zh_CN", "f": "json", "ajax": "1"}# 存放結果app_msg_list = []# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句# 也方便重新運行時(shí)設置頁(yè)數i = 0while True: begin = i * 5 params["begin"] = str(begin) # 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到 time.sleep(random.randint(1,10)) resp = requests.get(url, headers=headers, params = params, verify=False) # 微信流量控制, 退出 if resp.json()['base_resp']['ret'] == 200013: print("frequencey control, stop at {}".format(str(begin))) break # 如果返回的內容中為空則結束 if len(resp.json()['app_msg_list']) == 0: print("all ariticle parsed") break app_msg_list.append(resp.json()) # 翻頁(yè) i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為 fakeid 是每個(gè)公眾號的唯一標識符,令牌會(huì )經(jīng)常變化。這個(gè)信息可以通過(guò) Parse URL 來(lái)獲取,也可以從開(kāi)發(fā)者工具中查看
圖7
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示

圖8
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSONjson_name = "mp_data_{}.json".format(str(begin))with open(json_name, "w") as file: file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []for msg in app_msg_list: if "app_msg_list" in msg: for item in msg["app_msg_list"]: info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time'])) info_list.append(info)# save as csvwith open("app_msg_list.csv", "w") as file: file.writelines("\n".join(info_list))
querylist采集微信公眾號文章(微信公眾號怎么分析閱讀量贊量,平均點(diǎn)贊量的詳細教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 264 次瀏覽 ? 2021-10-01 10:01
微信公眾號如何分析閱讀量?要想做好微信,必須學(xué)會(huì )分析微信公眾號的訪(fǎng)問(wèn)數據。今天教大家如何使用微信分析公眾號數據中的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量、平均點(diǎn)贊數。金額的詳細教程,有需要的朋友可以參考
一般我們查詢(xún)別人的微信公眾號數據時(shí),由于我們沒(méi)有微信公眾號,只能一一查詢(xún)閱讀量、點(diǎn)贊等數據,效率很低。大家推薦一個(gè)更快的查詢(xún)微信數據的方法。
1、 用電腦打開(kāi)瀏覽器(不支持IE瀏覽器),進(jìn)入百度,搜索“微信大數據”。一是從百度微信大數據開(kāi)放微信公眾號在線(xiàn)數據查詢(xún)工具。
2、 進(jìn)入頁(yè)面后,屏幕上有一個(gè)顯眼的輸入框。輸入微信公眾號或微信賬號名稱(chēng)(輸入微信賬號更準確),點(diǎn)擊查詢(xún)。
3、 查詢(xún)后,進(jìn)入數據展示頁(yè)面。在這個(gè)頁(yè)面上,我們可以清楚地看到這個(gè)微信公眾號的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量和平均點(diǎn)贊數。此外,公眾號的發(fā)布周期一目了然。
4、 另外,在頁(yè)面底部,還對微信公眾號進(jìn)行了進(jìn)一步的分析。頭條和非頭條數據一目了然;另外,還分析了單個(gè)文章的數據。
注意:查詢(xún)微信公眾號時(shí)最好使用微信公眾號,因為微信公眾號很多都沒(méi)有認證,而且名字是一樣的。按名稱(chēng)查詢(xún)時(shí)很容易混淆。
微信公眾平臺公眾號文章如何添加音樂(lè )插件?
如何將微信公眾號名片一次轉發(fā)給多個(gè)群或人? 查看全部
querylist采集微信公眾號文章(微信公眾號怎么分析閱讀量贊量,平均點(diǎn)贊量的詳細教程)
微信公眾號如何分析閱讀量?要想做好微信,必須學(xué)會(huì )分析微信公眾號的訪(fǎng)問(wèn)數據。今天教大家如何使用微信分析公眾號數據中的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量、平均點(diǎn)贊數。金額的詳細教程,有需要的朋友可以參考
一般我們查詢(xún)別人的微信公眾號數據時(shí),由于我們沒(méi)有微信公眾號,只能一一查詢(xún)閱讀量、點(diǎn)贊等數據,效率很低。大家推薦一個(gè)更快的查詢(xún)微信數據的方法。
1、 用電腦打開(kāi)瀏覽器(不支持IE瀏覽器),進(jìn)入百度,搜索“微信大數據”。一是從百度微信大數據開(kāi)放微信公眾號在線(xiàn)數據查詢(xún)工具。

2、 進(jìn)入頁(yè)面后,屏幕上有一個(gè)顯眼的輸入框。輸入微信公眾號或微信賬號名稱(chēng)(輸入微信賬號更準確),點(diǎn)擊查詢(xún)。

3、 查詢(xún)后,進(jìn)入數據展示頁(yè)面。在這個(gè)頁(yè)面上,我們可以清楚地看到這個(gè)微信公眾號的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量和平均點(diǎn)贊數。此外,公眾號的發(fā)布周期一目了然。
4、 另外,在頁(yè)面底部,還對微信公眾號進(jìn)行了進(jìn)一步的分析。頭條和非頭條數據一目了然;另外,還分析了單個(gè)文章的數據。

注意:查詢(xún)微信公眾號時(shí)最好使用微信公眾號,因為微信公眾號很多都沒(méi)有認證,而且名字是一樣的。按名稱(chēng)查詢(xún)時(shí)很容易混淆。
微信公眾平臺公眾號文章如何添加音樂(lè )插件?
如何將微信公眾號名片一次轉發(fā)給多個(gè)群或人?
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-09-26 04:38
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理
二,。新文本
三,。超鏈接
四,。查找文章@>
2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包
一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求
二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量
三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲
二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值
三,。查看數據內容
四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取
通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()
二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token 查看全部
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖)
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理

二,。新文本

三,。超鏈接

四,。查找文章@>

2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包

一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求

二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量

三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲

二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值

三,。查看數據內容

四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取


通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()

二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2021-09-26 04:37
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理
二,。新文本
三,。超鏈接
四,。查找文章@>
2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包
一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求
二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量
三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲
二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值
三,。查看數據內容
四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取
通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()
二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token 查看全部
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖)
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理

二,。新文本

三,。超鏈接

四,。查找文章@>

2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包

一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求

二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量

三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲

二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值

三,。查看數據內容

四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取


通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()

二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token
querylist采集微信公眾號文章(注冊一下微信公眾號里的內容百度可是沒(méi)收錄的 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 206 次瀏覽 ? 2021-09-26 01:11
)
由于微信流量封閉,很難輕易看到微信內容。為了攀登微信公眾號的文章,一些網(wǎng)民用Python實(shí)現了這一點(diǎn)。讓我們看看他的實(shí)現思想和代碼。要知道微信公眾號的內容,百度不是收錄,但如果可以做到的話(huà),它是非常扭曲的。p>
開(kāi)發(fā)工具
思路
首先啟動(dòng)uuURL=“,掃描代碼注冊微信公共平臺,如果有,直接忽略,掃描代碼登錄。(只需注冊個(gè)人訂閱號),使用selenium自動(dòng)操作代碼掃描登錄獲取cookie值,然后用cookie響應
要先下載webdriver插件,請下載相應的Google瀏覽器版本。下載后,您將獲得chromedriver.exe,然后將chromedriver.exe放在python解釋器的python.exe文件的同級目錄中。作為響應,返回web源代碼和令牌值。令牌值為時(shí)效
首先打開(kāi)官方帳戶(hù)并在編輯文本時(shí)打開(kāi)超鏈接。p>
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
按F12查看與官方帳戶(hù)對應的偽造值。p>
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
翻開(kāi)頁(yè)面以打開(kāi)標題并返回第一頁(yè)的URL地址
第2頁(yè)地址
找到法律和法規
# !/usr/bin/nev python
# -*-coding:utf8-*-
import tkinter as tk
from selenium import webdriver
import time, re, jsonpath, xlwt
from requests_html import HTMLSession
session = HTMLSession()
class GZHSpider(object):
def __init__(self):
"""定義可視化窗口,并設置窗口和主題大小布局"""
self.window = tk.Tk()
self.window.title('公眾號信息采集')
self.window.geometry('800x600')
"""創(chuàng )建label_user按鈕,與說(shuō)明書(shū)"""
self.label_user = tk.Label(self.window, text='需要爬取的公眾號:', font=('Arial', 12), width=30, height=2)
self.label_user.pack()
"""創(chuàng )建label_user關(guān)聯(lián)輸入"""
self.entry_user = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_user.pack(after=self.label_user)
"""創(chuàng )建label_passwd按鈕,與說(shuō)明書(shū)"""
self.label_passwd = tk.Label(self.window, text="爬取多少頁(yè):(小于100)", font=('Arial', 12), width=30, height=2)
self.label_passwd.pack()
"""創(chuàng )建label_passwd關(guān)聯(lián)輸入"""
self.entry_passwd = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_passwd.pack(after=self.label_passwd)
"""創(chuàng )建Text富文本框,用于按鈕操作結果的展示"""
self.text1 = tk.Text(self.window, font=('Arial', 12), width=85, height=22)
self.text1.pack()
"""定義按鈕1,綁定觸發(fā)事件方法"""
self.button_1 = tk.Button(self.window, text='爬取', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_1)
self.button_1.pack(before=self.text1)
"""定義按鈕2,綁定觸發(fā)事件方法"""
self.button_2 = tk.Button(self.window, text='清除', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_2)
self.button_2.pack(anchor="e")
def parse_hit_click_1(self):
"""定義觸發(fā)事件1,調用main函數"""
user_name = self.entry_user.get()
pass_wd = int(self.entry_passwd.get())
self.main(user_name, pass_wd)
def main(self, user_name, pass_wd):
# 網(wǎng)頁(yè)登錄
driver_path = r'D:\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://mp.weixin.qq.com/')
time.sleep(2)
# 網(wǎng)頁(yè)最大化
driver.maximize_window()
# 拿微信掃描登錄
time.sleep(20)
# 獲得登錄的cookies
cookies_list = driver.get_cookies()
# 轉化成能用的cookie格式
cookie = [item["name"] + "=" + item["value"] for item in cookies_list]
cookie_str = '; '.join(item for item in cookie)
# 請求頭
headers_1 = {
'cookie': cookie_str,
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36'
}
# 起始地址
start_url = 'https://mp.weixin.qq.com/'
response = session.get(start_url, headers=headers_1).content.decode()
# 拿到token值,token值是有時(shí)效性的
token = re.findall(r'token=(\d+)', response)[0]
# 搜索出所有跟輸入的公眾號有關(guān)的
next_url = f'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={user_name}&token=' \
f'{token}&lang=zh_CN&f=json&ajax=1'
# 獲取響應
response_1 = session.get(next_url, headers=headers_1).content.decode()
# 拿到fakeid的值,確定公眾號,唯一的
fakeid = re.findall(r'"fakeid":"(.*?)",', response_1)[0]
# 構造公眾號的url地址
next_url_2 = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
headers_2 = {
'cookie': cookie_str,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36',
'referer': f'https://mp.weixin.qq.com/cgi-bin/appmsgtemplate?action=edit&lang=zh_CN&token={token}',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'x-requested-with': 'XMLHttpRequest'
}
# 表的創(chuàng )建
workbook = xlwt.Workbook(encoding='gbk', style_compression=0)
sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
j = 1
# 構造表頭
sheet.write(0, 0, '時(shí)間')
sheet.write(0, 1, '標題')
sheet.write(0, 2, '地址')
# 循環(huán)翻頁(yè)
for i in range(pass_wd):
data["begin"] = i * 5
time.sleep(3)
# 獲取響應的json數據
response_2 = session.get(next_url_2, params=data, headers=headers_2).json()
# jsonpath 獲取時(shí)間,標題,地址
title_list = jsonpath.jsonpath(response_2, '$..title')
url_list = jsonpath.jsonpath(response_2, '$..link')
create_time_list = jsonpath.jsonpath(response_2, '$..create_time')
# 將時(shí)間戳轉化為北京時(shí)間
list_1 = []
for create_time in create_time_list:
time_local = time.localtime(int(create_time))
time_1 = time.strftime("%Y-%m-%d", time_local)
time_2 = time.strftime("%H:%M:%S", time_local)
time_3 = time_1 + ' ' + time_2
list_1.append(time_3)
# for循環(huán)遍歷
for times, title, url in zip(list_1, title_list, url_list):
# 其中的'0-行, 0-列'指定表中的單元
sheet.write(j, 0, times)
sheet.write(j, 1, title)
sheet.write(j, 2, url)
j = j + 1
# 窗口顯示進(jìn)程
self.text1.insert("insert", f'*****************第{i+1}頁(yè)爬取成功*****************')
time.sleep(2)
self.text1.insert("insert", '\n ')
self.text1.insert("insert", '\n ')
# 最后保存成功
workbook.save(f'{user_name}公眾號信息.xls')
print(f"*********{user_name}公眾號信息保存成功*********")
def parse_hit_click_2(self):
"""定義觸發(fā)事件2,刪除文本框中內容"""
self.entry_user.delete(0, "end")
self.entry_passwd.delete(0, "end")
self.text1.delete("1.0", "end")
def center(self):
"""創(chuàng )建窗口居中函數方法"""
ws = self.window.winfo_screenwidth()
hs = self.window.winfo_screenheight()
x = int((ws / 2) - (800 / 2))
y = int((hs / 2) - (600 / 2))
self.window.geometry('{}x{}+{}+{}'.format(800, 600, x, y))
def run_loop(self):
"""禁止修改窗體大小規格"""
self.window.resizable(False, False)
"""窗口居中"""
self.center()
"""窗口維持--持久化"""
self.window.mainloop()
if __name__ == '__main__':
g = GZHSpider()
g.run_loop() 查看全部
querylist采集微信公眾號文章(注冊一下微信公眾號里的內容百度可是沒(méi)收錄的
)
由于微信流量封閉,很難輕易看到微信內容。為了攀登微信公眾號的文章,一些網(wǎng)民用Python實(shí)現了這一點(diǎn)。讓我們看看他的實(shí)現思想和代碼。要知道微信公眾號的內容,百度不是收錄,但如果可以做到的話(huà),它是非常扭曲的。p>
開(kāi)發(fā)工具
思路
首先啟動(dòng)uuURL=“,掃描代碼注冊微信公共平臺,如果有,直接忽略,掃描代碼登錄。(只需注冊個(gè)人訂閱號),使用selenium自動(dòng)操作代碼掃描登錄獲取cookie值,然后用cookie響應
要先下載webdriver插件,請下載相應的Google瀏覽器版本。下載后,您將獲得chromedriver.exe,然后將chromedriver.exe放在python解釋器的python.exe文件的同級目錄中。作為響應,返回web源代碼和令牌值。令牌值為時(shí)效
首先打開(kāi)官方帳戶(hù)并在編輯文本時(shí)打開(kāi)超鏈接。p>

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python
按F12查看與官方帳戶(hù)對應的偽造值。p>

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python
翻開(kāi)頁(yè)面以打開(kāi)標題并返回第一頁(yè)的URL地址
第2頁(yè)地址
找到法律和法規
# !/usr/bin/nev python
# -*-coding:utf8-*-
import tkinter as tk
from selenium import webdriver
import time, re, jsonpath, xlwt
from requests_html import HTMLSession
session = HTMLSession()
class GZHSpider(object):
def __init__(self):
"""定義可視化窗口,并設置窗口和主題大小布局"""
self.window = tk.Tk()
self.window.title('公眾號信息采集')
self.window.geometry('800x600')
"""創(chuàng )建label_user按鈕,與說(shuō)明書(shū)"""
self.label_user = tk.Label(self.window, text='需要爬取的公眾號:', font=('Arial', 12), width=30, height=2)
self.label_user.pack()
"""創(chuàng )建label_user關(guān)聯(lián)輸入"""
self.entry_user = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_user.pack(after=self.label_user)
"""創(chuàng )建label_passwd按鈕,與說(shuō)明書(shū)"""
self.label_passwd = tk.Label(self.window, text="爬取多少頁(yè):(小于100)", font=('Arial', 12), width=30, height=2)
self.label_passwd.pack()
"""創(chuàng )建label_passwd關(guān)聯(lián)輸入"""
self.entry_passwd = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_passwd.pack(after=self.label_passwd)
"""創(chuàng )建Text富文本框,用于按鈕操作結果的展示"""
self.text1 = tk.Text(self.window, font=('Arial', 12), width=85, height=22)
self.text1.pack()
"""定義按鈕1,綁定觸發(fā)事件方法"""
self.button_1 = tk.Button(self.window, text='爬取', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_1)
self.button_1.pack(before=self.text1)
"""定義按鈕2,綁定觸發(fā)事件方法"""
self.button_2 = tk.Button(self.window, text='清除', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_2)
self.button_2.pack(anchor="e")
def parse_hit_click_1(self):
"""定義觸發(fā)事件1,調用main函數"""
user_name = self.entry_user.get()
pass_wd = int(self.entry_passwd.get())
self.main(user_name, pass_wd)
def main(self, user_name, pass_wd):
# 網(wǎng)頁(yè)登錄
driver_path = r'D:\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://mp.weixin.qq.com/')
time.sleep(2)
# 網(wǎng)頁(yè)最大化
driver.maximize_window()
# 拿微信掃描登錄
time.sleep(20)
# 獲得登錄的cookies
cookies_list = driver.get_cookies()
# 轉化成能用的cookie格式
cookie = [item["name"] + "=" + item["value"] for item in cookies_list]
cookie_str = '; '.join(item for item in cookie)
# 請求頭
headers_1 = {
'cookie': cookie_str,
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36'
}
# 起始地址
start_url = 'https://mp.weixin.qq.com/'
response = session.get(start_url, headers=headers_1).content.decode()
# 拿到token值,token值是有時(shí)效性的
token = re.findall(r'token=(\d+)', response)[0]
# 搜索出所有跟輸入的公眾號有關(guān)的
next_url = f'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={user_name}&token=' \
f'{token}&lang=zh_CN&f=json&ajax=1'
# 獲取響應
response_1 = session.get(next_url, headers=headers_1).content.decode()
# 拿到fakeid的值,確定公眾號,唯一的
fakeid = re.findall(r'"fakeid":"(.*?)",', response_1)[0]
# 構造公眾號的url地址
next_url_2 = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
headers_2 = {
'cookie': cookie_str,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36',
'referer': f'https://mp.weixin.qq.com/cgi-bin/appmsgtemplate?action=edit&lang=zh_CN&token={token}',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'x-requested-with': 'XMLHttpRequest'
}
# 表的創(chuàng )建
workbook = xlwt.Workbook(encoding='gbk', style_compression=0)
sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
j = 1
# 構造表頭
sheet.write(0, 0, '時(shí)間')
sheet.write(0, 1, '標題')
sheet.write(0, 2, '地址')
# 循環(huán)翻頁(yè)
for i in range(pass_wd):
data["begin"] = i * 5
time.sleep(3)
# 獲取響應的json數據
response_2 = session.get(next_url_2, params=data, headers=headers_2).json()
# jsonpath 獲取時(shí)間,標題,地址
title_list = jsonpath.jsonpath(response_2, '$..title')
url_list = jsonpath.jsonpath(response_2, '$..link')
create_time_list = jsonpath.jsonpath(response_2, '$..create_time')
# 將時(shí)間戳轉化為北京時(shí)間
list_1 = []
for create_time in create_time_list:
time_local = time.localtime(int(create_time))
time_1 = time.strftime("%Y-%m-%d", time_local)
time_2 = time.strftime("%H:%M:%S", time_local)
time_3 = time_1 + ' ' + time_2
list_1.append(time_3)
# for循環(huán)遍歷
for times, title, url in zip(list_1, title_list, url_list):
# 其中的'0-行, 0-列'指定表中的單元
sheet.write(j, 0, times)
sheet.write(j, 1, title)
sheet.write(j, 2, url)
j = j + 1
# 窗口顯示進(jìn)程
self.text1.insert("insert", f'*****************第{i+1}頁(yè)爬取成功*****************')
time.sleep(2)
self.text1.insert("insert", '\n ')
self.text1.insert("insert", '\n ')
# 最后保存成功
workbook.save(f'{user_name}公眾號信息.xls')
print(f"*********{user_name}公眾號信息保存成功*********")
def parse_hit_click_2(self):
"""定義觸發(fā)事件2,刪除文本框中內容"""
self.entry_user.delete(0, "end")
self.entry_passwd.delete(0, "end")
self.text1.delete("1.0", "end")
def center(self):
"""創(chuàng )建窗口居中函數方法"""
ws = self.window.winfo_screenwidth()
hs = self.window.winfo_screenheight()
x = int((ws / 2) - (800 / 2))
y = int((hs / 2) - (600 / 2))
self.window.geometry('{}x{}+{}+{}'.format(800, 600, x, y))
def run_loop(self):
"""禁止修改窗體大小規格"""
self.window.resizable(False, False)
"""窗口居中"""
self.center()
"""窗口維持--持久化"""
self.window.mainloop()
if __name__ == '__main__':
g = GZHSpider()
g.run_loop()
querylist采集微信公眾號文章(querymap采集微信公眾號文章地址采集商品地址(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2021-09-25 11:00
querylist采集微信公眾號文章地址querymap采集商品地址歡迎大家積極參與哦,我們會(huì )盡力完成,謝謝大家啦~如果你覺(jué)得文章還不錯,也可以提供給我們哦,需要文章地址的話(huà)可以私信我哦(*∩_∩*)你有什么好奇怪的問(wèn)題也可以提哦,比如我querymap完沒(méi)有進(jìn)展?想看一下querymap是如何實(shí)現的,想看一下querymap做了哪些優(yōu)化?有什么技術(shù)上的問(wèn)題也可以問(wèn)呢,我們也會(huì )盡力回答你的呢,點(diǎn)點(diǎn)滴滴,一定有收獲!關(guān)注我們,我們下篇文章,見(jiàn)!。
沒(méi)寫(xiě)過(guò)xml,直接用了java的querymap,單頁(yè)面的話(huà)建議用個(gè)java組件。
分詞可以用jieba,分詞的性能還是非常不錯的。
要想回答你的問(wèn)題,先要了解哪個(gè)部分用到xml,現在搜索的用到的其實(shí)是es。
1、電商綜合服務(wù)等相關(guān)服務(wù),涵蓋了購物車(chē)、倉庫、發(fā)貨等等。
2、類(lèi)目中心,包含了類(lèi)目、價(jià)格等等。
3、品牌中心,主要包含三點(diǎn),一個(gè)是品牌、一個(gè)是產(chǎn)品、一個(gè)是故事。
4、品牌故事,包含大品牌故事、創(chuàng )始人背景等等。
5、消費者故事,主要針對消費者來(lái)進(jìn)行分析的。接下來(lái)需要做的就是進(jìn)行查詢(xún),querymap就是一個(gè)只處理xml字符串的方法,一般你第一個(gè)方法輸入的是url或者http請求,數據交給es先進(jìn)行處理,用來(lái)分析數據,結果再返回給你。有點(diǎn)像面向對象的api開(kāi)發(fā)。用法可以查看elasticsearches.pool.querymap(url);當然你可以根據自己業(yè)務(wù)進(jìn)行修改。 查看全部
querylist采集微信公眾號文章(querymap采集微信公眾號文章地址采集商品地址(組圖))
querylist采集微信公眾號文章地址querymap采集商品地址歡迎大家積極參與哦,我們會(huì )盡力完成,謝謝大家啦~如果你覺(jué)得文章還不錯,也可以提供給我們哦,需要文章地址的話(huà)可以私信我哦(*∩_∩*)你有什么好奇怪的問(wèn)題也可以提哦,比如我querymap完沒(méi)有進(jìn)展?想看一下querymap是如何實(shí)現的,想看一下querymap做了哪些優(yōu)化?有什么技術(shù)上的問(wèn)題也可以問(wèn)呢,我們也會(huì )盡力回答你的呢,點(diǎn)點(diǎn)滴滴,一定有收獲!關(guān)注我們,我們下篇文章,見(jiàn)!。
沒(méi)寫(xiě)過(guò)xml,直接用了java的querymap,單頁(yè)面的話(huà)建議用個(gè)java組件。
分詞可以用jieba,分詞的性能還是非常不錯的。
要想回答你的問(wèn)題,先要了解哪個(gè)部分用到xml,現在搜索的用到的其實(shí)是es。
1、電商綜合服務(wù)等相關(guān)服務(wù),涵蓋了購物車(chē)、倉庫、發(fā)貨等等。
2、類(lèi)目中心,包含了類(lèi)目、價(jià)格等等。
3、品牌中心,主要包含三點(diǎn),一個(gè)是品牌、一個(gè)是產(chǎn)品、一個(gè)是故事。
4、品牌故事,包含大品牌故事、創(chuàng )始人背景等等。
5、消費者故事,主要針對消費者來(lái)進(jìn)行分析的。接下來(lái)需要做的就是進(jìn)行查詢(xún),querymap就是一個(gè)只處理xml字符串的方法,一般你第一個(gè)方法輸入的是url或者http請求,數據交給es先進(jìn)行處理,用來(lái)分析數據,結果再返回給你。有點(diǎn)像面向對象的api開(kāi)發(fā)。用法可以查看elasticsearches.pool.querymap(url);當然你可以根據自己業(yè)務(wù)進(jìn)行修改。
querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 169 次瀏覽 ? 2021-09-22 03:05
一.ideas
我們通過(guò)網(wǎng)頁(yè)上微信公共平臺的圖形信息中的超鏈接獲得我們需要的界面圖形信息
超鏈接
從界面可以得到相應的微信公眾號和相應的微信公眾號文章. p>
二.界面分析
獲取微信公眾號界面:
參數:
動(dòng)作=搜索業(yè)務(wù)
開(kāi)始=0
計數=5
query=正式帳戶(hù)名
令牌=對應于每個(gè)帳戶(hù)的令牌值
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
所以這個(gè)界面只需要token,查詢(xún)的是您需要搜索的官方賬號,登錄后可以通過(guò)網(wǎng)頁(yè)獲取token。p>
微信公眾號
獲取官方賬號對應的文章接口:
參數:
動(dòng)作=列表uux
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
質(zhì)疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
在這個(gè)接口中,我們需要獲得上一步的令牌和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲得。所以我們可以得到微信公眾號的數據文章. p>
微信公眾號
三.實(shí)現
步驟1:
首先,我們需要通過(guò)selenium模擬登錄,然后獲得cookie和相應的令牌
def微信登錄(用戶(hù)、密碼):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#單擊以切換到帳戶(hù)密碼輸入
瀏覽器。通過(guò)xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。單擊()
睡眠(2)
#模擬用戶(hù)點(diǎn)擊
input\u user=browser。通過(guò)xpath(//input[@name='account'])查找元素
輸入用戶(hù)。發(fā)送密鑰(用戶(hù))
input_password=browser。通過(guò)xpath(//input[@name='password'])查找_元素
輸入密碼。發(fā)送密鑰(密碼)
睡眠(2)
#單擊登錄
瀏覽器。通過(guò)xpath(//a[@class='btn\u login'])查找元素。單擊()
睡眠(2)
#微信登錄驗證
打?。?請掃描二維碼')
睡眠(20)
#刷新當前頁(yè)面
browser.get('#39;)
睡眠(5)
#獲取指向當前網(wǎng)頁(yè)的鏈接
url=browser.current\u url
#獲取當前cookie
cookies=瀏覽器。獲取cookies()
對于Cookie中的項目:
post[項目['name']]=項目['value']
#轉換為字符串
cookie_str=json.dumps(post)
#本地存儲
將open('cookie.txt','w+',encoding='utf-8')作為f:
f、 寫(xiě)入(cookie_str)
打?。?成功在本地保存cookie')
#切片當前網(wǎng)頁(yè)鏈接并獲取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定義一個(gè)字典來(lái)存儲數據
paramdict={}
對于列表中的項目:
參數[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回參數['token']
定義登錄方式,參數為登錄賬號和密碼,然后定義字典存儲cookie值,模擬用戶(hù)輸入相應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃描代碼
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和令牌,然后返回
步驟2:
1.請求獲取相應的官方賬戶(hù)界面并獲取偽造ID
我們需要
url='#39
標題={
“主持人”:“
“用戶(hù)代理”:“Mozilla/5.0(Windows NT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像壁虎)鉻/86.0.424 0.183狩獵/537.36 Edg/86.0.62 2.63"
}
將open('cookie.txt','r',encoding='utf-8')作為f:
cookie=f.read()
cookies=json.loads(cookie)
resp=requests.get(url=url,headers=headers,cookies=cookies)
搜索url='#39
參數={
“操作”:“搜索業(yè)務(wù)”
“開(kāi)始”:“0”
“計數”:“5”
“查詢(xún)”:搜索正式帳戶(hù)名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我們獲得的令牌和cookie,然后返回JSON數據
通過(guò)requests.get request獲取微信公眾號
lists=search_resp.json().get('list')[0]
一,
,通過(guò)上面的代碼,您可以得到相應的官方賬戶(hù)數據
fakeid=lists.get('fakeid')
一,
通過(guò)上述代碼可以獲得相應的偽造ID
2.請求獲取微信官方賬號文章接口,獲取文章數據
我們需要
appmsg_url='#39
參數u數據={
“操作”:“列表”
“開(kāi)始”:“0”
“計數”:“5”
"假":假,
“類(lèi)型”:“9”
“查詢(xún)”:“
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
appmsg_resp=requests.get(url=appmsg_url,cookies=cookies,headers=headers,params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口來(lái)獲取返回的JSON數據
我們已經(jīng)實(shí)現了微信公眾號的爬網(wǎng)文章.
四.summary
通過(guò)微信官方賬號文章爬行,需要掌握selenium的用法和請求,以及如何獲取請求界面。但需要注意的是,當我們循環(huán)獲取文章時(shí),必須設置延遲時(shí)間,否則賬號很容易被阻塞,無(wú)法獲取返回的數據 查看全部
querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
一.ideas
我們通過(guò)網(wǎng)頁(yè)上微信公共平臺的圖形信息中的超鏈接獲得我們需要的界面圖形信息

超鏈接
從界面可以得到相應的微信公眾號和相應的微信公眾號文章. p>
二.界面分析
獲取微信公眾號界面:
參數:
動(dòng)作=搜索業(yè)務(wù)
開(kāi)始=0
計數=5
query=正式帳戶(hù)名
令牌=對應于每個(gè)帳戶(hù)的令牌值
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
所以這個(gè)界面只需要token,查詢(xún)的是您需要搜索的官方賬號,登錄后可以通過(guò)網(wǎng)頁(yè)獲取token。p>

微信公眾號
獲取官方賬號對應的文章接口:
參數:
動(dòng)作=列表uux
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
質(zhì)疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
在這個(gè)接口中,我們需要獲得上一步的令牌和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲得。所以我們可以得到微信公眾號的數據文章. p>

微信公眾號
三.實(shí)現
步驟1:
首先,我們需要通過(guò)selenium模擬登錄,然后獲得cookie和相應的令牌
def微信登錄(用戶(hù)、密碼):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#單擊以切換到帳戶(hù)密碼輸入
瀏覽器。通過(guò)xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。單擊()
睡眠(2)
#模擬用戶(hù)點(diǎn)擊
input\u user=browser。通過(guò)xpath(//input[@name='account'])查找元素
輸入用戶(hù)。發(fā)送密鑰(用戶(hù))
input_password=browser。通過(guò)xpath(//input[@name='password'])查找_元素
輸入密碼。發(fā)送密鑰(密碼)
睡眠(2)
#單擊登錄
瀏覽器。通過(guò)xpath(//a[@class='btn\u login'])查找元素。單擊()
睡眠(2)
#微信登錄驗證
打?。?請掃描二維碼')
睡眠(20)
#刷新當前頁(yè)面
browser.get('#39;)
睡眠(5)
#獲取指向當前網(wǎng)頁(yè)的鏈接
url=browser.current\u url
#獲取當前cookie
cookies=瀏覽器。獲取cookies()
對于Cookie中的項目:
post[項目['name']]=項目['value']
#轉換為字符串
cookie_str=json.dumps(post)
#本地存儲
將open('cookie.txt','w+',encoding='utf-8')作為f:
f、 寫(xiě)入(cookie_str)
打?。?成功在本地保存cookie')
#切片當前網(wǎng)頁(yè)鏈接并獲取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定義一個(gè)字典來(lái)存儲數據
paramdict={}
對于列表中的項目:
參數[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回參數['token']
定義登錄方式,參數為登錄賬號和密碼,然后定義字典存儲cookie值,模擬用戶(hù)輸入相應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃描代碼
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和令牌,然后返回
步驟2:
1.請求獲取相應的官方賬戶(hù)界面并獲取偽造ID
我們需要
url='#39
標題={
“主持人”:“
“用戶(hù)代理”:“Mozilla/5.0(Windows NT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像壁虎)鉻/86.0.424 0.183狩獵/537.36 Edg/86.0.62 2.63"
}
將open('cookie.txt','r',encoding='utf-8')作為f:
cookie=f.read()
cookies=json.loads(cookie)
resp=requests.get(url=url,headers=headers,cookies=cookies)
搜索url='#39
參數={
“操作”:“搜索業(yè)務(wù)”
“開(kāi)始”:“0”
“計數”:“5”
“查詢(xún)”:搜索正式帳戶(hù)名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我們獲得的令牌和cookie,然后返回JSON數據
通過(guò)requests.get request獲取微信公眾號
lists=search_resp.json().get('list')[0]
一,
,通過(guò)上面的代碼,您可以得到相應的官方賬戶(hù)數據
fakeid=lists.get('fakeid')
一,
通過(guò)上述代碼可以獲得相應的偽造ID
2.請求獲取微信官方賬號文章接口,獲取文章數據
我們需要
appmsg_url='#39
參數u數據={
“操作”:“列表”
“開(kāi)始”:“0”
“計數”:“5”
"假":假,
“類(lèi)型”:“9”
“查詢(xún)”:“
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
appmsg_resp=requests.get(url=appmsg_url,cookies=cookies,headers=headers,params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口來(lái)獲取返回的JSON數據
我們已經(jīng)實(shí)現了微信公眾號的爬網(wǎng)文章.
四.summary
通過(guò)微信官方賬號文章爬行,需要掌握selenium的用法和請求,以及如何獲取請求界面。但需要注意的是,當我們循環(huán)獲取文章時(shí),必須設置延遲時(shí)間,否則賬號很容易被阻塞,無(wú)法獲取返回的數據
querylist采集微信公眾號文章(如何通過(guò)微信公眾號后臺的“超鏈接”功能進(jìn)行爬取 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 366 次瀏覽 ? 2021-09-19 01:06
)
PS:如果你需要Python學(xué)習材料,你可以點(diǎn)擊下面的鏈接自己獲取
爬行的方法有很多
。今天,我們分享一種更簡(jiǎn)單的方式,通過(guò)微信官方賬號的超鏈接功能爬行??赡芤恍┖糜押献骰锇檫€沒(méi)有接觸到微信公眾號的背景。這是一張給你看的照片
在這里,一些好友可能會(huì )說(shuō),“我不能登錄到官方帳戶(hù)。什么?”p>
沒(méi)關(guān)系。每次我們想要得到我們想要的結果時(shí),Buddy都是我們的目標,但這不是我們研究的重點(diǎn)。我們關(guān)注爬行動(dòng)物的過(guò)程,我們是如何獲得目標數據的,所以我們不能登錄到官方的后臺帳號。在閱讀此文章之后,我們可能無(wú)法獲得最終的爬網(wǎng)結果。但是在閱讀了這篇文章文章之后,你也會(huì )有所收獲
一、初步準備
選擇正式帳號
為了爬行
點(diǎn)擊超鏈接-進(jìn)入編輯超鏈接界面-輸入搜索官方賬號
我們需要爬
今天我們以官方賬戶(hù)“數據分析”為例進(jìn)行介紹
謝謝你
點(diǎn)擊官方賬戶(hù)查看每個(gè)文章對應的標題信息
我們的目標是獲取文章標題和相應的鏈接
二、開(kāi)始爬行
爬蟲(chóng)三部曲:
1、請求網(wǎng)頁(yè)
首先,導入此爬蟲(chóng)程序所需的第三方庫
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
找到我們抓取的目標數據的位置,點(diǎn)擊搜索得到的包,得到目標網(wǎng)站和請求頭信息
請求網(wǎng)頁(yè)
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
print(html)
此處的請求標頭信息必須與cookie信息一起添加,否則無(wú)法獲取網(wǎng)頁(yè)信息
該網(wǎng)頁(yè)的請求結果如下圖所示。紅色框表示我們需要的文章標題和文章鏈接
2、parse網(wǎng)頁(yè)
從網(wǎng)頁(yè)響應結果可以看出,每個(gè)文章文章的標題和鏈接分別位于“title”標記和“cover”標記后面,因此我們可以使用正則表達式直接解析它們
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
分析結果如下
3、保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防觸發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
到目前為止,爬蟲(chóng)程序已經(jīng)完成。讓我們看一下最終結果
完整代碼
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
# 請求網(wǎng)頁(yè)
index=0
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
for i in range(2):#設置for循環(huán)實(shí)現翻頁(yè),爬取多頁(yè)內容,這里range括號內的參數可以更改
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin='+str(index)+'&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
# 解析網(wǎng)頁(yè)
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
# print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
# 保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防出發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
pass
pass
index += 5 查看全部
querylist采集微信公眾號文章(如何通過(guò)微信公眾號后臺的“超鏈接”功能進(jìn)行爬取
)
PS:如果你需要Python學(xué)習材料,你可以點(diǎn)擊下面的鏈接自己獲取
爬行的方法有很多
。今天,我們分享一種更簡(jiǎn)單的方式,通過(guò)微信官方賬號的超鏈接功能爬行??赡芤恍┖糜押献骰锇檫€沒(méi)有接觸到微信公眾號的背景。這是一張給你看的照片

在這里,一些好友可能會(huì )說(shuō),“我不能登錄到官方帳戶(hù)。什么?”p>
沒(méi)關(guān)系。每次我們想要得到我們想要的結果時(shí),Buddy都是我們的目標,但這不是我們研究的重點(diǎn)。我們關(guān)注爬行動(dòng)物的過(guò)程,我們是如何獲得目標數據的,所以我們不能登錄到官方的后臺帳號。在閱讀此文章之后,我們可能無(wú)法獲得最終的爬網(wǎng)結果。但是在閱讀了這篇文章文章之后,你也會(huì )有所收獲
一、初步準備
選擇正式帳號
為了爬行
點(diǎn)擊超鏈接-進(jìn)入編輯超鏈接界面-輸入搜索官方賬號
我們需要爬
今天我們以官方賬戶(hù)“數據分析”為例進(jìn)行介紹
謝謝你

點(diǎn)擊官方賬戶(hù)查看每個(gè)文章對應的標題信息

我們的目標是獲取文章標題和相應的鏈接
二、開(kāi)始爬行
爬蟲(chóng)三部曲:
1、請求網(wǎng)頁(yè)
首先,導入此爬蟲(chóng)程序所需的第三方庫
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
找到我們抓取的目標數據的位置,點(diǎn)擊搜索得到的包,得到目標網(wǎng)站和請求頭信息

請求網(wǎng)頁(yè)
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
print(html)
此處的請求標頭信息必須與cookie信息一起添加,否則無(wú)法獲取網(wǎng)頁(yè)信息
該網(wǎng)頁(yè)的請求結果如下圖所示。紅色框表示我們需要的文章標題和文章鏈接
2、parse網(wǎng)頁(yè)
從網(wǎng)頁(yè)響應結果可以看出,每個(gè)文章文章的標題和鏈接分別位于“title”標記和“cover”標記后面,因此我們可以使用正則表達式直接解析它們
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
分析結果如下

3、保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防觸發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
到目前為止,爬蟲(chóng)程序已經(jīng)完成。讓我們看一下最終結果

完整代碼
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
# 請求網(wǎng)頁(yè)
index=0
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
for i in range(2):#設置for循環(huán)實(shí)現翻頁(yè),爬取多頁(yè)內容,這里range括號內的參數可以更改
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin='+str(index)+'&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
# 解析網(wǎng)頁(yè)
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
# print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
# 保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防出發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
pass
pass
index += 5
querylist采集微信公眾號文章(垃圾程序員如何采集微信公眾號的內容?(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2021-10-29 00:19
今天,作為一個(gè)垃圾程序員的小編,和大家聊聊微信公眾號采集的內容?
首先你要明確你的目標:你的采集公眾號文章的數據會(huì )放在哪里?是在A(yíng)PP上還是在自己的官網(wǎng)上。,
意思是:你用這個(gè)微信公眾號的內容做什么?
幾個(gè)小白之前從我這里買(mǎi)過(guò)微信公眾號采集系統。主要用于采集公眾號原創(chuàng )內容,提升網(wǎng)站收錄和關(guān)鍵詞的內容排名。
問(wèn)題 1:我可以查看和修改 采集 中的數據嗎?
我的回答:采集過(guò)來(lái)的數據可以在系統上設置:under review,這種情況不會(huì )直接采集到你的網(wǎng)站,你可以選擇修改文章標題和圖片內容,然后發(fā)布。
這可以防止搜索引擎發(fā)現您在作弊 采集 內容,因為您在后臺手動(dòng)發(fā)布它。當然,我們的采集操作系統是原生態(tài)開(kāi)發(fā)的,不是市面上的采集軟件,所以我們不會(huì )在這里hack別人,因為他們開(kāi)發(fā)的系統和軟件都比較老,對于搜索引擎。把握一個(gè)標準,尤其是百度搜索。
回到正題:如何把采集微信公眾號文章放到官網(wǎng)或APP上?
1.公眾號抓包是通過(guò)微信公眾號用戶(hù)在微信上的登錄信息在微信系統中抓包的
2.在微信公眾號系統中設置微信公眾號登錄信息到我們系統
3.使用設置的登錄信息進(jìn)行微信搜索和微信抓包文章
4.將抓到的公眾號設置為系統中的普通用戶(hù)
5. 在系統中編輯、審核并發(fā)布捕獲的文章,并與對應的用戶(hù)關(guān)聯(lián)
6.發(fā)布的文章和普通用戶(hù)發(fā)布的文章沒(méi)有區別,可以直接使用之前的管理方式進(jìn)行管理。
準備公眾號獲取Token和Cookies的價(jià)值
1.用自己的公眾號登錄
2. 點(diǎn)擊“素材管理->新建圖文素材”
3.點(diǎn)擊圖形編輯器工具欄上的“超鏈接”
4.在對話(huà)框的“鏈接輸入法”中選擇“查找文章”
5.采集 使用的接口來(lái)自這里
加我微信購買(mǎi)咨詢(xún),我的微信是:1124805587 查看全部
querylist采集微信公眾號文章(垃圾程序員如何采集微信公眾號的內容?(組圖))
今天,作為一個(gè)垃圾程序員的小編,和大家聊聊微信公眾號采集的內容?
首先你要明確你的目標:你的采集公眾號文章的數據會(huì )放在哪里?是在A(yíng)PP上還是在自己的官網(wǎng)上。,
意思是:你用這個(gè)微信公眾號的內容做什么?
幾個(gè)小白之前從我這里買(mǎi)過(guò)微信公眾號采集系統。主要用于采集公眾號原創(chuàng )內容,提升網(wǎng)站收錄和關(guān)鍵詞的內容排名。
問(wèn)題 1:我可以查看和修改 采集 中的數據嗎?
我的回答:采集過(guò)來(lái)的數據可以在系統上設置:under review,這種情況不會(huì )直接采集到你的網(wǎng)站,你可以選擇修改文章標題和圖片內容,然后發(fā)布。
這可以防止搜索引擎發(fā)現您在作弊 采集 內容,因為您在后臺手動(dòng)發(fā)布它。當然,我們的采集操作系統是原生態(tài)開(kāi)發(fā)的,不是市面上的采集軟件,所以我們不會(huì )在這里hack別人,因為他們開(kāi)發(fā)的系統和軟件都比較老,對于搜索引擎。把握一個(gè)標準,尤其是百度搜索。
回到正題:如何把采集微信公眾號文章放到官網(wǎng)或APP上?
1.公眾號抓包是通過(guò)微信公眾號用戶(hù)在微信上的登錄信息在微信系統中抓包的
2.在微信公眾號系統中設置微信公眾號登錄信息到我們系統
3.使用設置的登錄信息進(jìn)行微信搜索和微信抓包文章
4.將抓到的公眾號設置為系統中的普通用戶(hù)
5. 在系統中編輯、審核并發(fā)布捕獲的文章,并與對應的用戶(hù)關(guān)聯(lián)
6.發(fā)布的文章和普通用戶(hù)發(fā)布的文章沒(méi)有區別,可以直接使用之前的管理方式進(jìn)行管理。
準備公眾號獲取Token和Cookies的價(jià)值

1.用自己的公眾號登錄
2. 點(diǎn)擊“素材管理->新建圖文素材”
3.點(diǎn)擊圖形編輯器工具欄上的“超鏈接”
4.在對話(huà)框的“鏈接輸入法”中選擇“查找文章”
5.采集 使用的接口來(lái)自這里
加我微信購買(mǎi)咨詢(xún),我的微信是:1124805587
querylist采集微信公眾號文章(如何采集微信文章?微信啄木鳥(niǎo)助手幫你采集二維碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 328 次瀏覽 ? 2021-10-26 15:26
除了公眾號,還提供公眾號。此外,可以通過(guò)微信公眾號采集數據。此外,它還可以采集標題、文章號、原文鏈接、閱讀號、積分、發(fā)布時(shí)間等數據。具體步驟如下:
1、采集需要采集的公共電話(huà)號碼列表。
2.將這些公眾號添加到清博指數的自定義列表中,
3、每天都會(huì )從公眾號獲取清晰的指數。注:如未查詢(xún)相關(guān)公眾號,需進(jìn)行入庫操作??晒┪⑿抛哪绝B(niǎo)助手使用,可用于word、PDF等多種格式,采集一種格式。會(huì )一直保存在微信公眾號里。
微信文章怎么采集?
謝謝
??!這個(gè)軟件就是MicroPort City,一個(gè)剛剛開(kāi)發(fā)出來(lái)的非常強大的軟件。主要通過(guò)采集二維碼和掃描群碼訪(fǎng)問(wèn)。軟件結合大數據、爬蟲(chóng)技術(shù)和圖像分析技術(shù),可以智能識別二維碼、檢測二維碼真偽、智能過(guò)濾重復二維碼、記憶查詢(xún)等功能,可以幫助您大大提高群組搜索效率,成功率組進(jìn)入率和組質(zhì)量。
通過(guò)五個(gè)渠道,我們可以采集所有公開(kāi)的、有效的、真實(shí)的、活躍的微信群。這10個(gè)二維碼中,大約有6-7個(gè)是有效的微信群,并且是實(shí)時(shí)更新的。一天可以采集近萬(wàn)個(gè)微信群,上萬(wàn)個(gè)微信群,二維碼,或特定群。一旦你設置了關(guān)鍵詞,你就可以開(kāi)始采集了。實(shí)時(shí)采集。軟件很強大,行業(yè)很廣。
如何采集微信文章?
作為新媒體運營(yíng)的小伙伴,每天需要同步很多文章。發(fā)送到微信的文章需要復制到頭條、短篇等平臺。但是,它不僅容易出現格式錯誤,而且復制的圖像也難以顯示。
這是一款可以一鍵發(fā)布文章多平臺的瀏覽器插件,支持同步到今日頭條、知乎、簡(jiǎn)書(shū)、掘金、CSDN等9個(gè)平臺。
使用時(shí)只需要安裝插件號即可。編輯完文章后,勾選同步平臺,系統會(huì )自動(dòng)將文章和圖片傳送到其他平臺,并保存為草稿供您進(jìn)一步編輯發(fā)布。這是非常省時(shí)和高效的。
插件也安裝好了,添加相關(guān)賬號即可使用。工作原理與上述插件類(lèi)似。填寫(xiě)要同步的文章鏈接,然后選擇同步平臺。
小曲是第一個(gè)常用的。如果你也找到了一個(gè)好用的一鍵同步平臺,請分享給我。
?、俎D發(fā)本文并關(guān)注@fun play
2.私信“一鍵發(fā)布”獲取以上插件 查看全部
querylist采集微信公眾號文章(如何采集微信文章?微信啄木鳥(niǎo)助手幫你采集二維碼)
除了公眾號,還提供公眾號。此外,可以通過(guò)微信公眾號采集數據。此外,它還可以采集標題、文章號、原文鏈接、閱讀號、積分、發(fā)布時(shí)間等數據。具體步驟如下:
1、采集需要采集的公共電話(huà)號碼列表。
2.將這些公眾號添加到清博指數的自定義列表中,
3、每天都會(huì )從公眾號獲取清晰的指數。注:如未查詢(xún)相關(guān)公眾號,需進(jìn)行入庫操作??晒┪⑿抛哪绝B(niǎo)助手使用,可用于word、PDF等多種格式,采集一種格式。會(huì )一直保存在微信公眾號里。
微信文章怎么采集?
謝謝
??!這個(gè)軟件就是MicroPort City,一個(gè)剛剛開(kāi)發(fā)出來(lái)的非常強大的軟件。主要通過(guò)采集二維碼和掃描群碼訪(fǎng)問(wèn)。軟件結合大數據、爬蟲(chóng)技術(shù)和圖像分析技術(shù),可以智能識別二維碼、檢測二維碼真偽、智能過(guò)濾重復二維碼、記憶查詢(xún)等功能,可以幫助您大大提高群組搜索效率,成功率組進(jìn)入率和組質(zhì)量。
通過(guò)五個(gè)渠道,我們可以采集所有公開(kāi)的、有效的、真實(shí)的、活躍的微信群。這10個(gè)二維碼中,大約有6-7個(gè)是有效的微信群,并且是實(shí)時(shí)更新的。一天可以采集近萬(wàn)個(gè)微信群,上萬(wàn)個(gè)微信群,二維碼,或特定群。一旦你設置了關(guān)鍵詞,你就可以開(kāi)始采集了。實(shí)時(shí)采集。軟件很強大,行業(yè)很廣。
如何采集微信文章?
作為新媒體運營(yíng)的小伙伴,每天需要同步很多文章。發(fā)送到微信的文章需要復制到頭條、短篇等平臺。但是,它不僅容易出現格式錯誤,而且復制的圖像也難以顯示。
這是一款可以一鍵發(fā)布文章多平臺的瀏覽器插件,支持同步到今日頭條、知乎、簡(jiǎn)書(shū)、掘金、CSDN等9個(gè)平臺。
使用時(shí)只需要安裝插件號即可。編輯完文章后,勾選同步平臺,系統會(huì )自動(dòng)將文章和圖片傳送到其他平臺,并保存為草稿供您進(jìn)一步編輯發(fā)布。這是非常省時(shí)和高效的。
插件也安裝好了,添加相關(guān)賬號即可使用。工作原理與上述插件類(lèi)似。填寫(xiě)要同步的文章鏈接,然后選擇同步平臺。
小曲是第一個(gè)常用的。如果你也找到了一個(gè)好用的一鍵同步平臺,請分享給我。
?、俎D發(fā)本文并關(guān)注@fun play
2.私信“一鍵發(fā)布”獲取以上插件
querylist采集微信公眾號文章( 《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2021-10-24 10:17
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
--------------------------------------------- 查看全部
querylist采集微信公眾號文章(
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))

一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
---------------------------------------------
querylist采集微信公眾號文章( 《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-10-23 11:09
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))
一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
--------------------------------------------- 查看全部
querylist采集微信公眾號文章(
《千夢(mèng)ip魔鬼實(shí)戰訓練營(yíng)》微信公眾號文章采集教學(xué))

一、前言
在上周千夢(mèng)團隊直播的《千夢(mèng)IP惡魔實(shí)戰訓練營(yíng)》中,我們推薦了一些比較優(yōu)秀的同行案例。目前頭腦中的許多優(yōu)秀球員素質(zhì)都非常高,生產(chǎn)力也很高。內容輸出,今天給大家帶來(lái)微信公眾號文章采集教學(xué)。
微信公眾號采集目前網(wǎng)上有很多方法和軟件,有免費的也有付費的,但質(zhì)量參差不齊,功能也大不相同。下載公眾號文章只是最基本的功能,如果能下載peer的所有數據,真的可以幫助我們分析標桿對象。
二、課程實(shí)踐
1.下載并解壓軟件
拿到軟件后,首先將所有文件解壓到桌面文件夾。此版本免費安裝,直接啟用軟件即可。
2.在PC上打開(kāi)微信
在電腦上下載微信,登錄賬號同步數據。
3.進(jìn)入采集對象公眾號
進(jìn)入對應公眾號,同時(shí)點(diǎn)擊歷史菜單界面,等待軟件**。
4.開(kāi)始采集
軟件采集完成后,建議選擇“PDF”格式導出,每個(gè)公眾號出來(lái)后都會(huì )變成一個(gè)單獨的文件夾。
---------------------------------------------
【教程資源介紹】
資源類(lèi)型:視頻+工具
資源大?。?36MB
積分兌換:會(huì )員150積分兌換(1元=10積分),VIP會(huì )員免費下載
【下載說(shuō)明】
免費注冊會(huì )員后,使用積分,點(diǎn)擊下方“積分兌換”查看百度網(wǎng)盤(pán)下載鏈接。
---------------------------------------------
querylist采集微信公眾號文章( UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 292 次瀏覽 ? 2021-10-21 06:58
UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
大家好,我是小明。昨天,我在《UI自動(dòng)化工具輕松實(shí)現微信消息自動(dòng)收發(fā)和好友動(dòng)態(tài)爬取》一文中演示了三個(gè)UIAutomation的使用實(shí)例。鏈接:
由于昨天對UIAutomation的API的理解不夠全面,個(gè)人代碼優(yōu)化還有很大的空間。今天我們的目標是實(shí)現微信PC版聯(lián)系人信息列表的抓取,這將分別使用PyWinAuto和uiautomation來(lái)實(shí)現。通過(guò)對比,大家就會(huì )有更深入的了解。
PyWinAuto 實(shí)現
PyWinAuto 官方文檔地址:
將 PyWinAuto 連接到桌面程序有兩種主要方式:
它們是進(jìn)程的 pid 和窗口句柄。下面我將演示如何獲取微信的進(jìn)程id和窗口句柄。
根據進(jìn)程名獲取進(jìn)程ID:
import psutil
def get_pid(proc_name):
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == proc_name:
return proc.pid
%time get_pid("WeChat.exe")
Wall time: 224 ms
7268
根據窗口標題和類(lèi)名查找窗口句柄:
import win32gui
%time hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
hwnd
Wall time: 0 ns
264610
耗時(shí)幾乎為零,比之前的方法快了100多倍。
于是我用窗口句柄連接微信窗口:
import win32gui
from pywinauto.application import Application
hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
app = Application(backend='uia').connect(handle=hwnd)
app
自動(dòng)打開(kāi)通訊錄:
import pywinauto
win = app['微信']
txl_btn = win.child_window(title="通訊錄", control_type="Button")
txl_btn.draw_outline()
cords = txl_btn.rectangle()
pywinauto.mouse.click(button='left', coords=(
(cords.right+cords.left)//2, (cords.top+cords.bottom)//2))
隨機點(diǎn)擊好友信息詳情后,通過(guò)inspect.exe查看節點(diǎn)信息。
然后編寫(xiě)如下代碼,根據分析結果運行:
可以看到各種信息提取的很流暢,但是最多需要3.54秒,不一定比手動(dòng)復制粘貼快。這也是pywinauto的一個(gè)缺點(diǎn),太慢了。
下面我們進(jìn)行批量爬取。原理大致是每次讀取信息面板時(shí),按向下箭頭鍵,發(fā)現當前讀取的數據與上一次一致。認為爬行已經(jīng)結束。
由于pywinauto的爬取速度太慢,我手動(dòng)將好友列表拖到最后,然后運行如下代碼:
import pandas as pd
win = app['微信']
contacts = win.child_window(title="聯(lián)系人", control_type="List")
# 點(diǎn)擊第二個(gè)可見(jiàn)元素
contacts.children()[1].click_input()
result = []
last = None
num = 0
while 1:
tag = win.Edit2
tmp = tag.parent().parent()
nickname = tag.get_value()
# 跳過(guò)兩個(gè)官方號
if nickname in ["微信團隊", "文件傳輸助手"]:
contacts.type_keys("{DOWN}")
continue
detail = tmp.children()[-1]
whats_up = ""
if hasattr(detail, 'get_value'):
whats_up = detail.get_value()
elif hasattr(detail, 'window_text') and detail.window_text() != "":
# 這種情況說(shuō)明是企業(yè)微信,跳過(guò)
contacts.type_keys("{DOWN}")
continue
items = tmp.parent().parent().children()[2].children()
row = {"昵稱(chēng)": nickname, "個(gè)性簽名": whats_up}
for item in items:
lines = item.children()
k = lines[0].window_text()
v = lines[1].window_text()
row[k.replace(" ", "")] = v
if row == last:
# 與上一條數據一致則說(shuō)明已經(jīng)爬取完畢
break
result.append(row)
num += 1
print("\r", num, row,
end=" ")
last = row
contacts.type_keys("{DOWN}")
df = pd.DataFrame(result)
df
最后結果:
可以看出,最后一頁(yè)11個(gè)微信賬號的數據抓取耗時(shí)45秒。
ui自動(dòng)化實(shí)現
接下來(lái),我們將使用 uiautomation 來(lái)實(shí)現這種爬取。
獲取微信窗口,點(diǎn)擊通訊錄按鈕:
import uiautomation as auto
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
txl_btn = wechatWindow.ButtonControl(Name='通訊錄')
txl_btn.Click()
然后點(diǎn)擊云朵君的好友信息,測試好友信息抽?。?br />
?。ㄟ@個(gè)數字,你可以隨意添加)
wechatWindow.EditControl(searchDepth=10, foundIndex=2) 表示在10層節點(diǎn)內搜索第二個(gè)EditControl類(lèi)型節點(diǎn)(第一個(gè)是搜索框,第二個(gè)是朋友的昵稱(chēng))。
GetParentControl() 和 GetNextSiblingControl() 是昨天沒(méi)有使用的 API。它們用于獲取父節點(diǎn)和下一個(gè)兄弟節點(diǎn)。使用這兩個(gè) API 來(lái)重寫(xiě)昨天的 文章 的代碼,將使程序代碼變得簡(jiǎn)單和高效。改進(jìn)。
然后使用與 PyWinAuto 相同的方式進(jìn)行批量提?。?br /> 還要先測試最后一頁(yè)的數據:
爬取只用了 11 秒,比 PyWinAuto 快 4 倍。
所以我們可以批量提取所有微信好友的數據。最后,我這邊的700多個(gè)朋友用了10分鐘。雖然速度較慢,但??與 PyWinAuto 相比完全可以接受。
代碼對比
對于兩者,我都試圖遵循完全相同的邏輯。
win.Edit2 也得到第二個(gè) EditControl 類(lèi)型節點(diǎn),
type_keys 是 PyWinAuto 用來(lái)模擬擊鍵的 API,{DOWN} 代表向下的方向鍵。
PyWinAuto獲取父子節點(diǎn)的api都是小寫(xiě)的,沒(méi)有g(shù)et,uiautomation獲取父子節點(diǎn)的api大寫(xiě),前綴為Get。
對于 PyWinAuto 中的這行代碼:
items = tmp.parent().parent().children()[2].children()
使用 uiautomation:
items = tmp.GetParentControl().GetNextSiblingControl().GetNextSiblingControl().GetChildren()
有一個(gè)很大的不同。
這是因為我沒(méi)有找到PyWinAuto獲取兄弟節點(diǎn)的API,所以采用了先獲取父節點(diǎn)再獲取子節點(diǎn)的方法。
另外,判斷是否是企業(yè)微信的邏輯不同。PyWinAuto也需要在個(gè)性簽名為空時(shí)處理異常,否則程序會(huì )報錯退出。具體點(diǎn)需要大家去測試和體驗。
其他地方的邏輯幾乎相同。
總結
本文還演示了 PyWinAuto 和 uiautomation 讀取微信好友列表信息。通過(guò)對比,我們可以更深入地了解兩者的API用法。作為作者,我在實(shí)踐中有著(zhù)深刻的理解。只是文章中的代碼并沒(méi)有體現這些細節,具體的事情需要讀者在分析對比的過(guò)程中得到答案。僅僅看本文的代碼或許可以解決當前的需求,但是很難將本文涉及的技術(shù)應用到其他需求上。
童鞋們,讓我們通過(guò)動(dòng)手實(shí)踐來(lái)學(xué)習吧??學(xué)完之后,你會(huì )看到任何實(shí)現Automation Provider的桌面程序,并且可以爬~ 查看全部
querylist采集微信公眾號文章(
UI自動(dòng)化工具輕松實(shí)現微信消息的自動(dòng)收發(fā)和朋友圈爬取)
大家好,我是小明。昨天,我在《UI自動(dòng)化工具輕松實(shí)現微信消息自動(dòng)收發(fā)和好友動(dòng)態(tài)爬取》一文中演示了三個(gè)UIAutomation的使用實(shí)例。鏈接:
由于昨天對UIAutomation的API的理解不夠全面,個(gè)人代碼優(yōu)化還有很大的空間。今天我們的目標是實(shí)現微信PC版聯(lián)系人信息列表的抓取,這將分別使用PyWinAuto和uiautomation來(lái)實(shí)現。通過(guò)對比,大家就會(huì )有更深入的了解。
PyWinAuto 實(shí)現
PyWinAuto 官方文檔地址:
將 PyWinAuto 連接到桌面程序有兩種主要方式:
它們是進(jìn)程的 pid 和窗口句柄。下面我將演示如何獲取微信的進(jìn)程id和窗口句柄。
根據進(jìn)程名獲取進(jìn)程ID:
import psutil
def get_pid(proc_name):
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == proc_name:
return proc.pid
%time get_pid("WeChat.exe")
Wall time: 224 ms
7268
根據窗口標題和類(lèi)名查找窗口句柄:
import win32gui
%time hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
hwnd
Wall time: 0 ns
264610
耗時(shí)幾乎為零,比之前的方法快了100多倍。
于是我用窗口句柄連接微信窗口:
import win32gui
from pywinauto.application import Application
hwnd = win32gui.FindWindow("WeChatMainWndForPC", "微信")
app = Application(backend='uia').connect(handle=hwnd)
app
自動(dòng)打開(kāi)通訊錄:
import pywinauto
win = app['微信']
txl_btn = win.child_window(title="通訊錄", control_type="Button")
txl_btn.draw_outline()
cords = txl_btn.rectangle()
pywinauto.mouse.click(button='left', coords=(
(cords.right+cords.left)//2, (cords.top+cords.bottom)//2))
隨機點(diǎn)擊好友信息詳情后,通過(guò)inspect.exe查看節點(diǎn)信息。
然后編寫(xiě)如下代碼,根據分析結果運行:

可以看到各種信息提取的很流暢,但是最多需要3.54秒,不一定比手動(dòng)復制粘貼快。這也是pywinauto的一個(gè)缺點(diǎn),太慢了。
下面我們進(jìn)行批量爬取。原理大致是每次讀取信息面板時(shí),按向下箭頭鍵,發(fā)現當前讀取的數據與上一次一致。認為爬行已經(jīng)結束。
由于pywinauto的爬取速度太慢,我手動(dòng)將好友列表拖到最后,然后運行如下代碼:
import pandas as pd
win = app['微信']
contacts = win.child_window(title="聯(lián)系人", control_type="List")
# 點(diǎn)擊第二個(gè)可見(jiàn)元素
contacts.children()[1].click_input()
result = []
last = None
num = 0
while 1:
tag = win.Edit2
tmp = tag.parent().parent()
nickname = tag.get_value()
# 跳過(guò)兩個(gè)官方號
if nickname in ["微信團隊", "文件傳輸助手"]:
contacts.type_keys("{DOWN}")
continue
detail = tmp.children()[-1]
whats_up = ""
if hasattr(detail, 'get_value'):
whats_up = detail.get_value()
elif hasattr(detail, 'window_text') and detail.window_text() != "":
# 這種情況說(shuō)明是企業(yè)微信,跳過(guò)
contacts.type_keys("{DOWN}")
continue
items = tmp.parent().parent().children()[2].children()
row = {"昵稱(chēng)": nickname, "個(gè)性簽名": whats_up}
for item in items:
lines = item.children()
k = lines[0].window_text()
v = lines[1].window_text()
row[k.replace(" ", "")] = v
if row == last:
# 與上一條數據一致則說(shuō)明已經(jīng)爬取完畢
break
result.append(row)
num += 1
print("\r", num, row,
end=" ")
last = row
contacts.type_keys("{DOWN}")
df = pd.DataFrame(result)
df
最后結果:

可以看出,最后一頁(yè)11個(gè)微信賬號的數據抓取耗時(shí)45秒。
ui自動(dòng)化實(shí)現
接下來(lái),我們將使用 uiautomation 來(lái)實(shí)現這種爬取。
獲取微信窗口,點(diǎn)擊通訊錄按鈕:
import uiautomation as auto
wechatWindow = auto.WindowControl(searchDepth=1, Name="微信", ClassName='WeChatMainWndForPC')
wechatWindow.SetActive()
txl_btn = wechatWindow.ButtonControl(Name='通訊錄')
txl_btn.Click()
然后點(diǎn)擊云朵君的好友信息,測試好友信息抽?。?br />

?。ㄟ@個(gè)數字,你可以隨意添加)
wechatWindow.EditControl(searchDepth=10, foundIndex=2) 表示在10層節點(diǎn)內搜索第二個(gè)EditControl類(lèi)型節點(diǎn)(第一個(gè)是搜索框,第二個(gè)是朋友的昵稱(chēng))。
GetParentControl() 和 GetNextSiblingControl() 是昨天沒(méi)有使用的 API。它們用于獲取父節點(diǎn)和下一個(gè)兄弟節點(diǎn)。使用這兩個(gè) API 來(lái)重寫(xiě)昨天的 文章 的代碼,將使程序代碼變得簡(jiǎn)單和高效。改進(jìn)。
然后使用與 PyWinAuto 相同的方式進(jìn)行批量提?。?br /> 還要先測試最后一頁(yè)的數據:

爬取只用了 11 秒,比 PyWinAuto 快 4 倍。
所以我們可以批量提取所有微信好友的數據。最后,我這邊的700多個(gè)朋友用了10分鐘。雖然速度較慢,但??與 PyWinAuto 相比完全可以接受。
代碼對比

對于兩者,我都試圖遵循完全相同的邏輯。
win.Edit2 也得到第二個(gè) EditControl 類(lèi)型節點(diǎn),
type_keys 是 PyWinAuto 用來(lái)模擬擊鍵的 API,{DOWN} 代表向下的方向鍵。
PyWinAuto獲取父子節點(diǎn)的api都是小寫(xiě)的,沒(méi)有g(shù)et,uiautomation獲取父子節點(diǎn)的api大寫(xiě),前綴為Get。
對于 PyWinAuto 中的這行代碼:
items = tmp.parent().parent().children()[2].children()
使用 uiautomation:
items = tmp.GetParentControl().GetNextSiblingControl().GetNextSiblingControl().GetChildren()
有一個(gè)很大的不同。
這是因為我沒(méi)有找到PyWinAuto獲取兄弟節點(diǎn)的API,所以采用了先獲取父節點(diǎn)再獲取子節點(diǎn)的方法。
另外,判斷是否是企業(yè)微信的邏輯不同。PyWinAuto也需要在個(gè)性簽名為空時(shí)處理異常,否則程序會(huì )報錯退出。具體點(diǎn)需要大家去測試和體驗。
其他地方的邏輯幾乎相同。
總結
本文還演示了 PyWinAuto 和 uiautomation 讀取微信好友列表信息。通過(guò)對比,我們可以更深入地了解兩者的API用法。作為作者,我在實(shí)踐中有著(zhù)深刻的理解。只是文章中的代碼并沒(méi)有體現這些細節,具體的事情需要讀者在分析對比的過(guò)程中得到答案。僅僅看本文的代碼或許可以解決當前的需求,但是很難將本文涉及的技術(shù)應用到其他需求上。
童鞋們,讓我們通過(guò)動(dòng)手實(shí)踐來(lái)學(xué)習吧??學(xué)完之后,你會(huì )看到任何實(shí)現Automation Provider的桌面程序,并且可以爬~
querylist采集微信公眾號文章(如下如下工具程序利用的是微信公眾號 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2021-10-19 22:05
)
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們也需要有一個(gè)公眾號。
正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requests
url = "https://mp.weixin.qq.com/cgi-b ... ot%3B
requests.get(url).json()
# {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...
user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agent
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import json
import requests
import time
import random
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
# 請求參數
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
begin = "0"
params = {
"action": "list_ex",
"begin": begin,
"count": "5",
"fakeid": config['fakeid'],
"type": "9",
"token": config['token'],
"lang": "zh_CN",
"f": "json",
"ajax": "1"
}
# 存放結果
app_msg_list = []
# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句
# 也方便重新運行時(shí)設置頁(yè)數
i = 0
while True:
begin = i * 5
params["begin"] = str(begin)
# 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到
time.sleep(random.randint(1,10))
resp = requests.get(url, headers=headers, params = params, verify=False)
# 微信流量控制, 退出
if resp.json()['base_resp']['ret'] == 200013:
print("frequencey control, stop at {}".format(str(begin)))
break
# 如果返回的內容中為空則結束
if len(resp.json()['app_msg_list']) == 0:
print("all ariticle parsed")
break
app_msg_list.append(resp.json())
# 翻頁(yè)
i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為fakeid是每個(gè)公眾號的唯一標識,token會(huì )經(jīng)常變化,信息可以通過(guò)解析URL獲取,也可以從開(kāi)發(fā)者工具查看
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取我自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSON
json_name = "mp_data_{}.json".format(str(begin))
with open(json_name, "w") as file:
file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []
for msg in app_msg_list:
if "app_msg_list" in msg:
for item in msg["app_msg_list"]:
info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time']))
info_list.append(info)
# save as csv
with open("app_msg_list.csv", "w") as file:
file.writelines("n".join(info_list)) 查看全部
querylist采集微信公眾號文章(如下如下工具程序利用的是微信公眾號
)
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們也需要有一個(gè)公眾號。

正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。

接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )

此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))

這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的

我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requests
url = "https://mp.weixin.qq.com/cgi-b ... ot%3B
requests.get(url).json()
# {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...
user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agent
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import json
import requests
import time
import random
import yaml
with open("wechat.yaml", "r") as file:
file_data = file.read()
config = yaml.safe_load(file_data)
headers = {
"Cookie": config['cookie'],
"User-Agent": config['user_agent']
}
# 請求參數
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
begin = "0"
params = {
"action": "list_ex",
"begin": begin,
"count": "5",
"fakeid": config['fakeid'],
"type": "9",
"token": config['token'],
"lang": "zh_CN",
"f": "json",
"ajax": "1"
}
# 存放結果
app_msg_list = []
# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句
# 也方便重新運行時(shí)設置頁(yè)數
i = 0
while True:
begin = i * 5
params["begin"] = str(begin)
# 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到
time.sleep(random.randint(1,10))
resp = requests.get(url, headers=headers, params = params, verify=False)
# 微信流量控制, 退出
if resp.json()['base_resp']['ret'] == 200013:
print("frequencey control, stop at {}".format(str(begin)))
break
# 如果返回的內容中為空則結束
if len(resp.json()['app_msg_list']) == 0:
print("all ariticle parsed")
break
app_msg_list.append(resp.json())
# 翻頁(yè)
i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為fakeid是每個(gè)公眾號的唯一標識,token會(huì )經(jīng)常變化,信息可以通過(guò)解析URL獲取,也可以從開(kāi)發(fā)者工具查看

爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示

這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取我自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSON
json_name = "mp_data_{}.json".format(str(begin))
with open(json_name, "w") as file:
file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []
for msg in app_msg_list:
if "app_msg_list" in msg:
for item in msg["app_msg_list"]:
info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time']))
info_list.append(info)
# save as csv
with open("app_msg_list.csv", "w") as file:
file.writelines("n".join(info_list))
querylist采集微信公眾號文章(如何處理微信的防盜鏈?突破難點(diǎn)一操作擁有微信)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2021-10-19 22:03
突破難關(guān)一操作
擁有一個(gè)帶有登錄和注冊鏈接的微信個(gè)人訂閱帳戶(hù)。微信公眾平臺:
未注冊的童鞋可以通過(guò)微信公眾號進(jìn)行注冊。這個(gè)過(guò)程非常簡(jiǎn)單。
登錄后,點(diǎn)擊左側菜單欄的“管理”-“物料管理”。然后點(diǎn)擊右側的“新建圖形材質(zhì)”
會(huì )彈出一個(gè)新標簽頁(yè),在上方工具欄中找到“超鏈接”,點(diǎn)擊
彈出小窗口,選擇“查找文章”,輸入需要搜索的公眾號,以“宅基地”公眾號為例
點(diǎn)擊后可以彈出公眾號的所有歷史記錄文章
搜索可以獲取所有相關(guān)公眾號信息,但我只取第一個(gè)進(jìn)行測試,其他所有感興趣的人也可以獲得。
詳細信息請參考崔大神的文章,#rd
根據個(gè)人公眾號界面抓取
根據搜狗微信界面抓取
# -*- coding:utf-8 -*-
import requests,os,time,re
from urllib.parse import quote
from pyquery import PyQuery as pq
from selenium.webdriver import Chrome
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
# 這三行代碼是防止在python2上面編碼錯誤的,在python3上面不要要這樣設置
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
# 搜索入口地址,以公眾為關(guān)鍵字搜索該公眾號
def get_search_result_by_keywords(sogou_search_url):
# 爬蟲(chóng)偽裝頭部設置
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
# 設置操作超時(shí)時(shí)長(cháng)
timeout = 5
# 爬蟲(chóng)模擬在一個(gè)request.session中完成
s = requests.Session()
log(u'搜索地址為:%s' % sogou_search_url)
return s.get(sogou_search_url, headers=headers, timeout=timeout).content
# 獲得公眾號主頁(yè)地址
def get_wx_url_by_sougou_search_html(sougou_search_html):
doc = pq(sougou_search_html)
return doc('div[class=txt-box]')('p[class=tit]')('a').attr('href')
# 使用webdriver 加載公眾號主頁(yè)內容,主要是js渲染的部分
def get_selenium_js_html(url):
# browser = webdriver.PhantomJS(executable_path=r'D:\Python2.7\Scripts\phantomjs.exe')
options = Options()
options.add_argument('-headless') # 無(wú)頭參數
driver = Chrome(executable_path='chromedriver', chrome_options=options)
wait = WebDriverWait(driver, timeout=10)
driver.get(url)
time.sleep(3)
# 執行js得到整個(gè)頁(yè)面內容
html = driver.execute_script("return document.documentElement.outerHTML")
driver.close()
return html
# 獲取公眾號文章內容
def parse_wx_articles_by_html(selenium_html):
doc = pq(selenium_html)
return doc('div[class="weui_media_box appmsg"]')
# 將獲取到的文章轉換為字典
def switch_arctiles_to_list(articles):
# 定義存貯變量
articles_list = []
i = 1
# 遍歷找到的文章,解析里面的內容
if articles:
for article in articles.items():
log(u'開(kāi)始整合(%d/%d)' % (i, len(articles)))
# 處理單個(gè)文章
articles_list.append(parse_one_article(article))
i += 1
return articles_list
# 解析單篇文章
def parse_one_article(article):
article_dict = {}
# 獲取標題
title = article('h4[class="weui_media_title"]').text().strip()
###log(u'標題是: %s' % title)
# 獲取標題對應的地址
url = 'http://mp.weixin.qq.com' + article('h4[class="weui_media_title"]').attr('hrefs')
log(u'地址為: %s' % url)
# 獲取概要內容
summary = article('.weui_media_desc').text()
log(u'文章簡(jiǎn)述: %s' % summary)
# 獲取文章發(fā)表時(shí)間
date = article('.weui_media_extra_info').text().strip()
log(u'發(fā)表時(shí)間為: %s' % date)
# 獲取封面圖片
pic = parse_cover_pic(article)
# 返回字典數據
return {
'title': title,
'url': url,
'summary': summary,
'date': date,
'pic': pic
}
# 查找封面圖片,獲取封面圖片地址
def parse_cover_pic(article):
pic = article('.weui_media_hd').attr('style')
p = re.compile(r'background-image:url\((.*?)\)')
rs = p.findall(pic)
log(u'封面圖片是:%s ' % rs[0] if len(rs) > 0 else '')
return rs[0] if len(rs) > 0 else ''
# 自定義log函數,主要是加上時(shí)間
def log(msg):
print(u'%s: %s' % (time.strftime('%Y-%m-%d_%H-%M-%S'), msg))
# 驗證函數
def need_verify(selenium_html):
' 有時(shí)候對方會(huì )封鎖ip,這里做一下判斷,檢測html中是否包含id=verify_change的標簽,有的話(huà),代表被重定向了,提醒過(guò)一陣子重試 '
return pq(selenium_html)('#verify_change').text() != ''
# 創(chuàng )建公眾號命名的文件夾
def create_dir(keywords):
if not os.path.exists(keywords):
os.makedirs(keywords)
def run(keywords):
' 爬蟲(chóng)入口函數 '
# Step 0 : 創(chuàng )建公眾號命名的文件夾
create_dir(keywords)
# 搜狐微信搜索鏈接入口
sogou_search_url = 'http://weixin.sogou.com/weixin ... 39%3B % quote(keywords)
# Step 1:GET請求到搜狗微信引擎,以微信公眾號英文名稱(chēng)作為查詢(xún)關(guān)鍵字
log(u'開(kāi)始獲取,微信公眾號英文名為:%s' % keywords)
log(u'開(kāi)始調用sougou搜索引擎')
sougou_search_html = get_search_result_by_keywords(sogou_search_url)
# Step 2:從搜索結果頁(yè)中解析出公眾號主頁(yè)鏈接
log(u'獲取sougou_search_html成功,開(kāi)始抓取公眾號對應的主頁(yè)wx_url')
wx_url = get_wx_url_by_sougou_search_html(sougou_search_html)
log(u'獲取wx_url成功,%s' % wx_url)
# Step 3:Selenium+PhantomJs獲取js異步加載渲染后的html
log(u'開(kāi)始調用selenium渲染html')
selenium_html = get_selenium_js_html(wx_url)
# Step 4: 檢測目標網(wǎng)站是否進(jìn)行了封鎖
if need_verify(selenium_html):
log(u'爬蟲(chóng)被目標網(wǎng)站封鎖,請稍后再試')
else:
# Step 5: 使用PyQuery,從Step 3獲取的html中解析出公眾號文章列表的數據
log(u'調用selenium渲染html完成,開(kāi)始解析公眾號文章')
articles = parse_wx_articles_by_html(selenium_html)
log(u'抓取到微信文章%d篇' % len(articles))
# Step 6: 把微信文章數據封裝成字典的list
log(u'開(kāi)始整合微信文章數據為字典')
articles_list = switch_arctiles_to_list(articles)
return [content['title'] for content in articles_list]
if __name__ == '__main__':
gongzhonghao = input(u'input weixin gongzhonghao:')
if not gongzhonghao:
gongzhonghao = 'spider'
text = " ".join(run(gongzhonghao))
print(text)
直接運行main方法,在控制臺輸入你要爬的公眾號的英文名。中文可能不止一個(gè)。精確搜索在這里完成,只找到一個(gè)。查看英文公眾號,點(diǎn)擊手機即可。公眾號然后查看公眾號信息
防水蛭
微信公眾號已經(jīng)對文章中的圖片做了防盜鏈處理,所以如果圖片在公眾號、小程序、PC瀏覽器以外的地方無(wú)法顯示,建議您閱讀這篇文章< @文章學(xué)習如何應對微信的反水蛭。
參考: 查看全部
querylist采集微信公眾號文章(如何處理微信的防盜鏈?突破難點(diǎn)一操作擁有微信)
突破難關(guān)一操作
擁有一個(gè)帶有登錄和注冊鏈接的微信個(gè)人訂閱帳戶(hù)。微信公眾平臺:
未注冊的童鞋可以通過(guò)微信公眾號進(jìn)行注冊。這個(gè)過(guò)程非常簡(jiǎn)單。
登錄后,點(diǎn)擊左側菜單欄的“管理”-“物料管理”。然后點(diǎn)擊右側的“新建圖形材質(zhì)”
會(huì )彈出一個(gè)新標簽頁(yè),在上方工具欄中找到“超鏈接”,點(diǎn)擊
彈出小窗口,選擇“查找文章”,輸入需要搜索的公眾號,以“宅基地”公眾號為例
點(diǎn)擊后可以彈出公眾號的所有歷史記錄文章
搜索可以獲取所有相關(guān)公眾號信息,但我只取第一個(gè)進(jìn)行測試,其他所有感興趣的人也可以獲得。
詳細信息請參考崔大神的文章,#rd
根據個(gè)人公眾號界面抓取
根據搜狗微信界面抓取
# -*- coding:utf-8 -*-
import requests,os,time,re
from urllib.parse import quote
from pyquery import PyQuery as pq
from selenium.webdriver import Chrome
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
# 這三行代碼是防止在python2上面編碼錯誤的,在python3上面不要要這樣設置
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
# 搜索入口地址,以公眾為關(guān)鍵字搜索該公眾號
def get_search_result_by_keywords(sogou_search_url):
# 爬蟲(chóng)偽裝頭部設置
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
# 設置操作超時(shí)時(shí)長(cháng)
timeout = 5
# 爬蟲(chóng)模擬在一個(gè)request.session中完成
s = requests.Session()
log(u'搜索地址為:%s' % sogou_search_url)
return s.get(sogou_search_url, headers=headers, timeout=timeout).content
# 獲得公眾號主頁(yè)地址
def get_wx_url_by_sougou_search_html(sougou_search_html):
doc = pq(sougou_search_html)
return doc('div[class=txt-box]')('p[class=tit]')('a').attr('href')
# 使用webdriver 加載公眾號主頁(yè)內容,主要是js渲染的部分
def get_selenium_js_html(url):
# browser = webdriver.PhantomJS(executable_path=r'D:\Python2.7\Scripts\phantomjs.exe')
options = Options()
options.add_argument('-headless') # 無(wú)頭參數
driver = Chrome(executable_path='chromedriver', chrome_options=options)
wait = WebDriverWait(driver, timeout=10)
driver.get(url)
time.sleep(3)
# 執行js得到整個(gè)頁(yè)面內容
html = driver.execute_script("return document.documentElement.outerHTML")
driver.close()
return html
# 獲取公眾號文章內容
def parse_wx_articles_by_html(selenium_html):
doc = pq(selenium_html)
return doc('div[class="weui_media_box appmsg"]')
# 將獲取到的文章轉換為字典
def switch_arctiles_to_list(articles):
# 定義存貯變量
articles_list = []
i = 1
# 遍歷找到的文章,解析里面的內容
if articles:
for article in articles.items():
log(u'開(kāi)始整合(%d/%d)' % (i, len(articles)))
# 處理單個(gè)文章
articles_list.append(parse_one_article(article))
i += 1
return articles_list
# 解析單篇文章
def parse_one_article(article):
article_dict = {}
# 獲取標題
title = article('h4[class="weui_media_title"]').text().strip()
###log(u'標題是: %s' % title)
# 獲取標題對應的地址
url = 'http://mp.weixin.qq.com' + article('h4[class="weui_media_title"]').attr('hrefs')
log(u'地址為: %s' % url)
# 獲取概要內容
summary = article('.weui_media_desc').text()
log(u'文章簡(jiǎn)述: %s' % summary)
# 獲取文章發(fā)表時(shí)間
date = article('.weui_media_extra_info').text().strip()
log(u'發(fā)表時(shí)間為: %s' % date)
# 獲取封面圖片
pic = parse_cover_pic(article)
# 返回字典數據
return {
'title': title,
'url': url,
'summary': summary,
'date': date,
'pic': pic
}
# 查找封面圖片,獲取封面圖片地址
def parse_cover_pic(article):
pic = article('.weui_media_hd').attr('style')
p = re.compile(r'background-image:url\((.*?)\)')
rs = p.findall(pic)
log(u'封面圖片是:%s ' % rs[0] if len(rs) > 0 else '')
return rs[0] if len(rs) > 0 else ''
# 自定義log函數,主要是加上時(shí)間
def log(msg):
print(u'%s: %s' % (time.strftime('%Y-%m-%d_%H-%M-%S'), msg))
# 驗證函數
def need_verify(selenium_html):
' 有時(shí)候對方會(huì )封鎖ip,這里做一下判斷,檢測html中是否包含id=verify_change的標簽,有的話(huà),代表被重定向了,提醒過(guò)一陣子重試 '
return pq(selenium_html)('#verify_change').text() != ''
# 創(chuàng )建公眾號命名的文件夾
def create_dir(keywords):
if not os.path.exists(keywords):
os.makedirs(keywords)
def run(keywords):
' 爬蟲(chóng)入口函數 '
# Step 0 : 創(chuàng )建公眾號命名的文件夾
create_dir(keywords)
# 搜狐微信搜索鏈接入口
sogou_search_url = 'http://weixin.sogou.com/weixin ... 39%3B % quote(keywords)
# Step 1:GET請求到搜狗微信引擎,以微信公眾號英文名稱(chēng)作為查詢(xún)關(guān)鍵字
log(u'開(kāi)始獲取,微信公眾號英文名為:%s' % keywords)
log(u'開(kāi)始調用sougou搜索引擎')
sougou_search_html = get_search_result_by_keywords(sogou_search_url)
# Step 2:從搜索結果頁(yè)中解析出公眾號主頁(yè)鏈接
log(u'獲取sougou_search_html成功,開(kāi)始抓取公眾號對應的主頁(yè)wx_url')
wx_url = get_wx_url_by_sougou_search_html(sougou_search_html)
log(u'獲取wx_url成功,%s' % wx_url)
# Step 3:Selenium+PhantomJs獲取js異步加載渲染后的html
log(u'開(kāi)始調用selenium渲染html')
selenium_html = get_selenium_js_html(wx_url)
# Step 4: 檢測目標網(wǎng)站是否進(jìn)行了封鎖
if need_verify(selenium_html):
log(u'爬蟲(chóng)被目標網(wǎng)站封鎖,請稍后再試')
else:
# Step 5: 使用PyQuery,從Step 3獲取的html中解析出公眾號文章列表的數據
log(u'調用selenium渲染html完成,開(kāi)始解析公眾號文章')
articles = parse_wx_articles_by_html(selenium_html)
log(u'抓取到微信文章%d篇' % len(articles))
# Step 6: 把微信文章數據封裝成字典的list
log(u'開(kāi)始整合微信文章數據為字典')
articles_list = switch_arctiles_to_list(articles)
return [content['title'] for content in articles_list]
if __name__ == '__main__':
gongzhonghao = input(u'input weixin gongzhonghao:')
if not gongzhonghao:
gongzhonghao = 'spider'
text = " ".join(run(gongzhonghao))
print(text)
直接運行main方法,在控制臺輸入你要爬的公眾號的英文名。中文可能不止一個(gè)。精確搜索在這里完成,只找到一個(gè)。查看英文公眾號,點(diǎn)擊手機即可。公眾號然后查看公眾號信息
防水蛭
微信公眾號已經(jīng)對文章中的圖片做了防盜鏈處理,所以如果圖片在公眾號、小程序、PC瀏覽器以外的地方無(wú)法顯示,建議您閱讀這篇文章< @文章學(xué)習如何應對微信的反水蛭。
參考:
querylist采集微信公眾號文章(Excel教程Excel函數Excel表格制作Excel2010Excel實(shí)用技巧Excel視頻教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-10-19 15:01
querylist采集微信公眾號文章分類(lèi)的網(wǎng)頁(yè)數據,不用爬蟲(chóng)(tornado,python等),golang,支持一些可視化的交互設計,nodejs等(同時(shí),這篇文章是代碼,需要預先安裝nodejs)網(wǎng)頁(yè)端爬取,使用tornado,同時(shí)有網(wǎng)頁(yè)的分析api,類(lèi)似spyder,不過(guò)它是web平臺。微信公眾號文章分類(lèi)采集接入tornado中要說(shuō)到http的請求,并不需要注冊帳號,必須在瀏覽器上輸入網(wǎng)址然后才能操作,先從網(wǎng)頁(yè)抓取開(kāi)始,可以通過(guò)http請求->》響應網(wǎng)頁(yè)->》點(diǎn)擊分類(lèi)查看我們通過(guò)tornado抓取了taro_spider.js這個(gè)頁(yè)面,采集到包含60個(gè)微信公眾號文章類(lèi)別的網(wǎng)頁(yè)數據,需要編寫(xiě)如下代碼:httprequest->connect("")->從瀏覽器中提交到encoder.py中,接著(zhù)就有了以下代碼:1.post和get請求發(fā)送請求發(fā)送post請求,soeasy!//connectmesocute,${touchable}httprequest->connect(""),meme!//connectmeme!//get請求發(fā)送get請求,同樣發(fā)送到taro.py中,并且發(fā)送后端!//connectmeme!//post請求中accept:json,post:['accept-encoding','gzip,deflate','bytes0xffff']httprequest->connect("")->在taro.py中taro_spider.js與http相關(guān)的代碼應該在anacondauseragent中,在我實(shí)際項目中,taro_spider.js相當于python的pipinstalllxml;forlxmlinenumerate(${lxml}):printlxml.load(lxml)所以,post請求發(fā)送的是數據接收者,taro_spider.js等同于lxml。
接著(zhù),我們要操作taro_spider.js,進(jìn)行http請求、響應處理,然后接著(zhù)我們要運行指定路徑下的.py程序并運行這個(gè)程序,最后我們采用自己的服務(wù)器自己的httpserver去請求就可以。2.請求體處理使用get發(fā)送請求,如果不加上#!/usr/bin/envpython#-*-coding:utf-8-*-importjsonimportthreadingimportstructdefpost(url):"""post請求發(fā)送到to_header=':'name='to_name'accept='gzip,deflate'content-type='application/x-www-form-urlencoded'"""returnjson.loads(url.replace('/','').text)returnthreading.thread(target=struct.pool,policy=struct.pool)defconnect(host):"""調用一下connect(),然后post請求一下"""host=threading.pool()host.setdefaulthost('。 查看全部
querylist采集微信公眾號文章(Excel教程Excel函數Excel表格制作Excel2010Excel實(shí)用技巧Excel視頻教程)
querylist采集微信公眾號文章分類(lèi)的網(wǎng)頁(yè)數據,不用爬蟲(chóng)(tornado,python等),golang,支持一些可視化的交互設計,nodejs等(同時(shí),這篇文章是代碼,需要預先安裝nodejs)網(wǎng)頁(yè)端爬取,使用tornado,同時(shí)有網(wǎng)頁(yè)的分析api,類(lèi)似spyder,不過(guò)它是web平臺。微信公眾號文章分類(lèi)采集接入tornado中要說(shuō)到http的請求,并不需要注冊帳號,必須在瀏覽器上輸入網(wǎng)址然后才能操作,先從網(wǎng)頁(yè)抓取開(kāi)始,可以通過(guò)http請求->》響應網(wǎng)頁(yè)->》點(diǎn)擊分類(lèi)查看我們通過(guò)tornado抓取了taro_spider.js這個(gè)頁(yè)面,采集到包含60個(gè)微信公眾號文章類(lèi)別的網(wǎng)頁(yè)數據,需要編寫(xiě)如下代碼:httprequest->connect("")->從瀏覽器中提交到encoder.py中,接著(zhù)就有了以下代碼:1.post和get請求發(fā)送請求發(fā)送post請求,soeasy!//connectmesocute,${touchable}httprequest->connect(""),meme!//connectmeme!//get請求發(fā)送get請求,同樣發(fā)送到taro.py中,并且發(fā)送后端!//connectmeme!//post請求中accept:json,post:['accept-encoding','gzip,deflate','bytes0xffff']httprequest->connect("")->在taro.py中taro_spider.js與http相關(guān)的代碼應該在anacondauseragent中,在我實(shí)際項目中,taro_spider.js相當于python的pipinstalllxml;forlxmlinenumerate(${lxml}):printlxml.load(lxml)所以,post請求發(fā)送的是數據接收者,taro_spider.js等同于lxml。
接著(zhù),我們要操作taro_spider.js,進(jìn)行http請求、響應處理,然后接著(zhù)我們要運行指定路徑下的.py程序并運行這個(gè)程序,最后我們采用自己的服務(wù)器自己的httpserver去請求就可以。2.請求體處理使用get發(fā)送請求,如果不加上#!/usr/bin/envpython#-*-coding:utf-8-*-importjsonimportthreadingimportstructdefpost(url):"""post請求發(fā)送到to_header=':'name='to_name'accept='gzip,deflate'content-type='application/x-www-form-urlencoded'"""returnjson.loads(url.replace('/','').text)returnthreading.thread(target=struct.pool,policy=struct.pool)defconnect(host):"""調用一下connect(),然后post請求一下"""host=threading.pool()host.setdefaulthost('。
querylist采集微信公眾號文章( 微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 205 次瀏覽 ? 2021-10-19 10:25
微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))
微信閱讀App上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊。
鈦媒體編輯今天點(diǎn)擊微信閱讀App主界面左下角的書(shū)店,彈出了“優(yōu)質(zhì)公眾號”模塊。
在“查看全部”內容列表中,鈦媒體發(fā)現該模塊分為8個(gè)子模塊:“全部”、“輕松搞笑”、“影評”、“文學(xué)雜志”、“互聯(lián)網(wǎng)”、“知識教育” ”、“商業(yè)金融”和“其他”。而在每個(gè)子模塊中,都有來(lái)自微信公眾平臺文章的各個(gè)自媒體賬號的收錄。
另外,通過(guò)微信閱讀App搜索欄,可以直接搜索相關(guān)公眾號和內容。
事實(shí)上,今年4月,微信閱讀2.4.0就已經(jīng)加入了一個(gè)新功能:引入優(yōu)質(zhì)公眾號。
而馬化騰去年在朋友圈與kol的對話(huà)中也透露,微信正在內部測試公眾號的付費訂閱功能。此后,一直沒(méi)有消息表明該功能何時(shí)正式發(fā)布。
微信閱讀App的自然付費閱讀模式與微信公眾號付費閱讀自然匹配。不過(guò),微信閱讀App中的優(yōu)質(zhì)公眾號模塊依然可以免費閱讀。
鈦媒體發(fā)現,這并不是微信閱讀和微信公眾號的第一次結合。早在去年9月2.2.0版本上線(xiàn)時(shí),就已經(jīng)出現了“支持看書(shū)”公眾號文章”的提示。
關(guān)于新功能,鈦媒體小編采訪(fǎng)了幾家公眾號運營(yíng)商,發(fā)現微信閱讀沒(méi)有事先就授權和版權問(wèn)題與運營(yíng)商溝通。
本次我們將直接抓取微信公眾號中的文章,作為獨立版塊使用。以后會(huì )不會(huì )涉及版權問(wèn)題?
從目前的功能來(lái)看,微信閱讀App看起來(lái)是一個(gè)完美的“接現成孩子”的過(guò)程。同時(shí)在搜索一些不知名的公眾號時(shí),發(fā)現系統并沒(méi)有收錄??梢钥闯?,“優(yōu)質(zhì)公眾號”是在微信閱讀相關(guān)數據庫篩選后導入的。
據了解,微信閱讀App于2015年8月27日正式上線(xiàn),目前華為應用商店下載量超過(guò)1億。龐大的流量平臺未來(lái)將如何與微信公眾號運營(yíng)商分享收益?值得期待。(本文首發(fā)于鈦媒體,作者/桑明強,編輯/叢聰) 查看全部
querylist采集微信公眾號文章(
微信讀書(shū)App已經(jīng)上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊(圖))

微信閱讀App上線(xiàn)優(yōu)質(zhì)公眾號推薦模塊。
鈦媒體編輯今天點(diǎn)擊微信閱讀App主界面左下角的書(shū)店,彈出了“優(yōu)質(zhì)公眾號”模塊。
在“查看全部”內容列表中,鈦媒體發(fā)現該模塊分為8個(gè)子模塊:“全部”、“輕松搞笑”、“影評”、“文學(xué)雜志”、“互聯(lián)網(wǎng)”、“知識教育” ”、“商業(yè)金融”和“其他”。而在每個(gè)子模塊中,都有來(lái)自微信公眾平臺文章的各個(gè)自媒體賬號的收錄。

另外,通過(guò)微信閱讀App搜索欄,可以直接搜索相關(guān)公眾號和內容。
事實(shí)上,今年4月,微信閱讀2.4.0就已經(jīng)加入了一個(gè)新功能:引入優(yōu)質(zhì)公眾號。
而馬化騰去年在朋友圈與kol的對話(huà)中也透露,微信正在內部測試公眾號的付費訂閱功能。此后,一直沒(méi)有消息表明該功能何時(shí)正式發(fā)布。
微信閱讀App的自然付費閱讀模式與微信公眾號付費閱讀自然匹配。不過(guò),微信閱讀App中的優(yōu)質(zhì)公眾號模塊依然可以免費閱讀。
鈦媒體發(fā)現,這并不是微信閱讀和微信公眾號的第一次結合。早在去年9月2.2.0版本上線(xiàn)時(shí),就已經(jīng)出現了“支持看書(shū)”公眾號文章”的提示。
關(guān)于新功能,鈦媒體小編采訪(fǎng)了幾家公眾號運營(yíng)商,發(fā)現微信閱讀沒(méi)有事先就授權和版權問(wèn)題與運營(yíng)商溝通。
本次我們將直接抓取微信公眾號中的文章,作為獨立版塊使用。以后會(huì )不會(huì )涉及版權問(wèn)題?
從目前的功能來(lái)看,微信閱讀App看起來(lái)是一個(gè)完美的“接現成孩子”的過(guò)程。同時(shí)在搜索一些不知名的公眾號時(shí),發(fā)現系統并沒(méi)有收錄??梢钥闯?,“優(yōu)質(zhì)公眾號”是在微信閱讀相關(guān)數據庫篩選后導入的。

據了解,微信閱讀App于2015年8月27日正式上線(xiàn),目前華為應用商店下載量超過(guò)1億。龐大的流量平臺未來(lái)將如何與微信公眾號運營(yíng)商分享收益?值得期待。(本文首發(fā)于鈦媒體,作者/桑明強,編輯/叢聰)
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 199 次瀏覽 ? 2021-10-19 02:02
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面
從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面


從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 207 次瀏覽 ? 2021-10-18 08:08
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面
從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,只需用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章抓取
一.思考
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面


從界面我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二. 接口分析
微信公眾號獲取界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=官方賬號名
token=每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
所以在這個(gè)界面,我們只需要獲取token,查詢(xún)就是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取對應公眾號文章的界面:
范圍:
動(dòng)作=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方式:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以獲取到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。通過(guò)模擬用戶(hù),輸入對應的賬號密碼,點(diǎn)擊登錄,就會(huì )出現掃碼驗證,只需用登錄微信掃一掃即可。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token,然后返回。
第二步:1.請求對應的公眾號接口,得到我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取到的token和cookie,然后通過(guò)requests.get請求獲取返回的微信公眾號的json數據
lists = search_resp.json().get('list')[0]
通過(guò)上面的代碼可以得到對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼可以得到對應的fakeid
2.請求獲取微信公眾號文章接口,獲取我們需要的數據文章
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口獲取返回的json數據。
我們已經(jīng)實(shí)現了微信公眾號文章的抓取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,當我們在循環(huán)中獲取文章時(shí),一定要設置一個(gè)延遲時(shí)間,否則賬號很容易被封,獲取不到返回的數據。
querylist采集微信公眾號文章( 小編來(lái)一起獲取微信公眾號文章的方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 210 次瀏覽 ? 2021-10-10 09:18
小編來(lái)一起獲取微信公眾號文章的方法)
微信公眾平臺獲取公眾號文章示例
更新時(shí)間:2019年12月25日09:45:38 作者:考古學(xué)家lx
本文文章主要介紹如何通過(guò)微信公眾平臺獲取公眾號文章的例子。文章中介紹的示例代碼非常詳細,對大家的學(xué)習或工作有一定的參考學(xué)習價(jià)值。小伙伴們和小編一起學(xué)習吧
之前一直自己維護一個(gè)公眾號,但是因為個(gè)人關(guān)系好久沒(méi)有更新,今天才上來(lái)想起來(lái),卻偶然發(fā)現了微信公眾號文章的獲取方式。
之前獲取的方式很多,通過(guò)搜狗、清博、web、客戶(hù)端等都可以,這個(gè)可能不太好,但是操作簡(jiǎn)單易懂。
所以,首先你需要在微信公眾平臺上有一個(gè)賬號
微信公眾平臺:
登錄后,進(jìn)入首頁(yè),點(diǎn)擊新建群發(fā)。
選擇自創(chuàng )圖形:
好像是公眾號操作教學(xué)
進(jìn)入編輯頁(yè)面后,點(diǎn)擊超鏈接
彈出一個(gè)選擇框,我們在框中輸入對應的公眾號名稱(chēng),就會(huì )出現對應的文章列表
你驚喜嗎?您可以打開(kāi)控制臺并檢查請求的界面
打開(kāi)回復,里面有我們需要的文章鏈接
確認數據后,我們需要對這個(gè)界面進(jìn)行分析。
感覺(jué)非常簡(jiǎn)單。GET 請求攜帶一些參數。
Fakeid是公眾號的唯一ID,所以如果想直接通過(guò)名字獲取文章列表,還需要先獲取fakeid。
當我們輸入官方賬號名稱(chēng)時(shí),點(diǎn)擊搜索??梢钥吹剿阉鹘缑姹挥|發(fā),返回fakeid。
這個(gè)接口需要的參數不多。
接下來(lái)我們就可以用代碼來(lái)模擬上面的操作了。
但是您還需要使用現有的 cookie 來(lái)避免登錄。
目前,我還沒(méi)有測試過(guò)cookie的有效期??赡苄枰皶r(shí)更新 cookie。
測試代碼:
import requests
import json
Cookie = '請換上自己的Cookie,獲取方法:直接復制下來(lái)'
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
headers = {
"Cookie": Cookie,
"User-Agent": 'Mozilla/5.0 (Linux; Android 10; YAL-AL00 Build/HUAWEIYAL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 HuaweiBrowser/10.0.1.335 Mobile Safari/537.36'
}
keyword = 'pythonlx' # 公眾號名字:可自定義
token = '你的token' # 獲取方法:如上述 直接復制下來(lái)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={}&token={}&lang=zh_CN&f=json&ajax=1'.format(keyword,token)
doc = requests.get(search_url,headers=headers).text
jstext = json.loads(doc)
fakeid = jstext['list'][0]['fakeid']
data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"begin": 0,
"count": "5",
"query": "",
"fakeid": fakeid,
"type": "9",
}
json_test = requests.get(url, headers=headers, params=data).text
json_test = json.loads(json_test)
print(json_test)
這樣就可以得到最新的10個(gè)文章。如果想獲取更多歷史記錄文章,可以修改數據中的“begin”參數,0為第一頁(yè),5為第二頁(yè),10為第三頁(yè)(以此類(lèi)推)
但是如果你想大規模爬行:
請自己安排一個(gè)穩定的代理,降低爬蟲(chóng)速度,準備多個(gè)賬號,減少被封的可能性。
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。 查看全部
querylist采集微信公眾號文章(
小編來(lái)一起獲取微信公眾號文章的方法)
微信公眾平臺獲取公眾號文章示例
更新時(shí)間:2019年12月25日09:45:38 作者:考古學(xué)家lx
本文文章主要介紹如何通過(guò)微信公眾平臺獲取公眾號文章的例子。文章中介紹的示例代碼非常詳細,對大家的學(xué)習或工作有一定的參考學(xué)習價(jià)值。小伙伴們和小編一起學(xué)習吧
之前一直自己維護一個(gè)公眾號,但是因為個(gè)人關(guān)系好久沒(méi)有更新,今天才上來(lái)想起來(lái),卻偶然發(fā)現了微信公眾號文章的獲取方式。
之前獲取的方式很多,通過(guò)搜狗、清博、web、客戶(hù)端等都可以,這個(gè)可能不太好,但是操作簡(jiǎn)單易懂。
所以,首先你需要在微信公眾平臺上有一個(gè)賬號
微信公眾平臺:

登錄后,進(jìn)入首頁(yè),點(diǎn)擊新建群發(fā)。

選擇自創(chuàng )圖形:

好像是公眾號操作教學(xué)
進(jìn)入編輯頁(yè)面后,點(diǎn)擊超鏈接

彈出一個(gè)選擇框,我們在框中輸入對應的公眾號名稱(chēng),就會(huì )出現對應的文章列表

你驚喜嗎?您可以打開(kāi)控制臺并檢查請求的界面

打開(kāi)回復,里面有我們需要的文章鏈接

確認數據后,我們需要對這個(gè)界面進(jìn)行分析。
感覺(jué)非常簡(jiǎn)單。GET 請求攜帶一些參數。

Fakeid是公眾號的唯一ID,所以如果想直接通過(guò)名字獲取文章列表,還需要先獲取fakeid。
當我們輸入官方賬號名稱(chēng)時(shí),點(diǎn)擊搜索??梢钥吹剿阉鹘缑姹挥|發(fā),返回fakeid。

這個(gè)接口需要的參數不多。

接下來(lái)我們就可以用代碼來(lái)模擬上面的操作了。
但是您還需要使用現有的 cookie 來(lái)避免登錄。

目前,我還沒(méi)有測試過(guò)cookie的有效期??赡苄枰皶r(shí)更新 cookie。
測試代碼:
import requests
import json
Cookie = '請換上自己的Cookie,獲取方法:直接復制下來(lái)'
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
headers = {
"Cookie": Cookie,
"User-Agent": 'Mozilla/5.0 (Linux; Android 10; YAL-AL00 Build/HUAWEIYAL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 HuaweiBrowser/10.0.1.335 Mobile Safari/537.36'
}
keyword = 'pythonlx' # 公眾號名字:可自定義
token = '你的token' # 獲取方法:如上述 直接復制下來(lái)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={}&token={}&lang=zh_CN&f=json&ajax=1'.format(keyword,token)
doc = requests.get(search_url,headers=headers).text
jstext = json.loads(doc)
fakeid = jstext['list'][0]['fakeid']
data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"begin": 0,
"count": "5",
"query": "",
"fakeid": fakeid,
"type": "9",
}
json_test = requests.get(url, headers=headers, params=data).text
json_test = json.loads(json_test)
print(json_test)
這樣就可以得到最新的10個(gè)文章。如果想獲取更多歷史記錄文章,可以修改數據中的“begin”參數,0為第一頁(yè),5為第二頁(yè),10為第三頁(yè)(以此類(lèi)推)
但是如果你想大規模爬行:
請自己安排一個(gè)穩定的代理,降低爬蟲(chóng)速度,準備多個(gè)賬號,減少被封的可能性。
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
querylist采集微信公眾號文章(微信公眾號后臺編輯素材界面的程序利用程序 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 197 次瀏覽 ? 2021-10-07 16:19
)
準備階段
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們還需要有一個(gè)公眾號。
圖1正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。
圖2
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )
圖3
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))
圖4
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的
圖5
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requestsurl = "https://mp.weixin.qq.com/cgi-b ... s.get(url).json() # {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agentimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
?
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
?
圖 6 ?
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
?
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import jsonimport requestsimport timeimport randomimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }# 請求參數url = "https://mp.weixin.qq.com/cgi-bin/appmsg"begin = "0"params = { "action": "list_ex", "begin": begin, "count": "5", "fakeid": config['fakeid'], "type": "9", "token": config['token'], "lang": "zh_CN", "f": "json", "ajax": "1"}# 存放結果app_msg_list = []# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句# 也方便重新運行時(shí)設置頁(yè)數i = 0while True: begin = i * 5 params["begin"] = str(begin) # 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到 time.sleep(random.randint(1,10)) resp = requests.get(url, headers=headers, params = params, verify=False) # 微信流量控制, 退出 if resp.json()['base_resp']['ret'] == 200013: print("frequencey control, stop at {}".format(str(begin))) break # 如果返回的內容中為空則結束 if len(resp.json()['app_msg_list']) == 0: print("all ariticle parsed") break app_msg_list.append(resp.json()) # 翻頁(yè) i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為 fakeid 是每個(gè)公眾號的唯一標識符,令牌會(huì )經(jīng)常變化。這個(gè)信息可以通過(guò) Parse URL 來(lái)獲取,也可以從開(kāi)發(fā)者工具中查看
圖7
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示
圖8
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSONjson_name = "mp_data_{}.json".format(str(begin))with open(json_name, "w") as file: file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []for msg in app_msg_list: if "app_msg_list" in msg: for item in msg["app_msg_list"]: info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time'])) info_list.append(info)# save as csvwith open("app_msg_list.csv", "w") as file: file.writelines("\n".join(info_list)) 查看全部
querylist采集微信公眾號文章(微信公眾號后臺編輯素材界面的程序利用程序
)
準備階段
為了實(shí)現爬蟲(chóng)我們需要使用以下工具
另外,這個(gè)爬蟲(chóng)程序使用了微信公眾號后臺編輯素材接口。原理是當我們插入超鏈接時(shí),微信會(huì )調用一個(gè)特殊的API(見(jiàn)下圖)來(lái)獲取指定公眾號的文章列表。因此,我們還需要有一個(gè)公眾號。

圖1正式開(kāi)始
我們需要登錄微信公眾號,點(diǎn)擊素材管理,點(diǎn)擊新建圖文消息,然后點(diǎn)擊上面的超鏈接。

圖2
接下來(lái),按 F12 打開(kāi) Chrome 的開(kāi)發(fā)者工具并選擇網(wǎng)絡(luò )

圖3
此時(shí),在之前的超鏈接界面,點(diǎn)擊“選擇其他公眾號”,輸入你需要爬取的公眾號(例如中國移動(dòng))

圖4
這時(shí)候之前的Network會(huì )刷新一些鏈接,其中以“appmsg”開(kāi)頭的內容就是我們需要分析的

圖5
我們解析請求的 URL
https://mp.weixin.qq.com/cgi-b ... x%3D1
它分為三個(gè)部分
通過(guò)不斷瀏覽下一頁(yè),我們發(fā)現每次只有begin會(huì )改變,每次增加5,這就是count的值。
接下來(lái)我們使用Python獲取同樣的資源,但是直接運行下面的代碼是無(wú)法獲取資源的
import requestsurl = "https://mp.weixin.qq.com/cgi-b ... s.get(url).json() # {'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}}
之所以能在瀏覽器上獲取資源,是因為我們登錄了微信公眾號后端。而Python沒(méi)有我們的登錄信息,所以請求無(wú)效。我們需要在requests中設置headers參數,傳入Cookie和User-Agent來(lái)模擬登錄
由于頭信息的內容每次都會(huì )變化,我把這些內容放在一個(gè)單獨的文件中,即“wechat.yaml”,信息如下
cookie: ua_id=wuzWM9FKE14...user_agent: Mozilla/5.0...
只需要事后閱讀
# 讀取cookie和user_agentimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }requests.get(url, headers=headers, verify=False).json()
在返回的JSON中,我們可以看到每個(gè)文章的標題(title)、摘要(digest)、鏈接(link)、推送時(shí)間(update_time)和封面地址(cover)。
?
appmsgid 是每條推文的唯一標識符,aid 是每條推文的唯一標識符。
?

圖 6 ?
其實(shí)除了cookies,URL中的token參數也會(huì )用來(lái)限制爬蟲(chóng),所以上面代碼的輸出很可能是{'base_resp': {'ret': 200040,'err_msg':'無(wú)效的 csrf 令牌'} }
?
然后我們寫(xiě)一個(gè)循環(huán)來(lái)獲取文章的所有JSON并保存。
import jsonimport requestsimport timeimport randomimport yamlwith open("wechat.yaml", "r") as file: file_data = file.read()config = yaml.safe_load(file_data)headers = { "Cookie": config['cookie'], "User-Agent": config['user_agent'] }# 請求參數url = "https://mp.weixin.qq.com/cgi-bin/appmsg"begin = "0"params = { "action": "list_ex", "begin": begin, "count": "5", "fakeid": config['fakeid'], "type": "9", "token": config['token'], "lang": "zh_CN", "f": "json", "ajax": "1"}# 存放結果app_msg_list = []# 在不知道公眾號有多少文章的情況下,使用while語(yǔ)句# 也方便重新運行時(shí)設置頁(yè)數i = 0while True: begin = i * 5 params["begin"] = str(begin) # 隨機暫停幾秒,避免過(guò)快的請求導致過(guò)快的被查到 time.sleep(random.randint(1,10)) resp = requests.get(url, headers=headers, params = params, verify=False) # 微信流量控制, 退出 if resp.json()['base_resp']['ret'] == 200013: print("frequencey control, stop at {}".format(str(begin))) break # 如果返回的內容中為空則結束 if len(resp.json()['app_msg_list']) == 0: print("all ariticle parsed") break app_msg_list.append(resp.json()) # 翻頁(yè) i += 1
在上面的代碼中,我還在“wechat.yaml”文件中存儲了fakeid和token。這是因為 fakeid 是每個(gè)公眾號的唯一標識符,令牌會(huì )經(jīng)常變化。這個(gè)信息可以通過(guò) Parse URL 來(lái)獲取,也可以從開(kāi)發(fā)者工具中查看
圖7
爬了一段時(shí)間后,會(huì )遇到以下問(wèn)題
{'base_resp': {'err_msg': 'freq control', 'ret': 200013}}
此時(shí),當你嘗試在公眾號后臺插入超鏈接時(shí),會(huì )遇到如下提示

圖8
這是公眾號的流量限制,一般需要30-60分鐘才能繼續。為了完美處理這個(gè)問(wèn)題,你可能需要申請多個(gè)公眾號,可能需要對抗微信公眾號登錄系統,或者你可能需要設置代理池。
但是我不需要工業(yè)級的爬蟲(chóng),我只想爬取自己的公眾號信息,所以等了一個(gè)小時(shí),再次登錄公眾號,獲取cookie和token,運行。我不想用自己的興趣挑戰別人的工作。
最后,將結果保存為 JSON 格式。
# 保存結果為JSONjson_name = "mp_data_{}.json".format(str(begin))with open(json_name, "w") as file: file.write(json.dumps(app_msg_list, indent=2, ensure_ascii=False))
或者提取文章標識符、標題、URL、發(fā)布時(shí)間四列,保存為CSV。
info_list = []for msg in app_msg_list: if "app_msg_list" in msg: for item in msg["app_msg_list"]: info = '"{}","{}","{}","{}"'.format(str(item["aid"]), item['title'], item['link'], str(item['create_time'])) info_list.append(info)# save as csvwith open("app_msg_list.csv", "w") as file: file.writelines("\n".join(info_list))
querylist采集微信公眾號文章(微信公眾號怎么分析閱讀量贊量,平均點(diǎn)贊量的詳細教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 264 次瀏覽 ? 2021-10-01 10:01
微信公眾號如何分析閱讀量?要想做好微信,必須學(xué)會(huì )分析微信公眾號的訪(fǎng)問(wèn)數據。今天教大家如何使用微信分析公眾號數據中的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量、平均點(diǎn)贊數。金額的詳細教程,有需要的朋友可以參考
一般我們查詢(xún)別人的微信公眾號數據時(shí),由于我們沒(méi)有微信公眾號,只能一一查詢(xún)閱讀量、點(diǎn)贊等數據,效率很低。大家推薦一個(gè)更快的查詢(xún)微信數據的方法。
1、 用電腦打開(kāi)瀏覽器(不支持IE瀏覽器),進(jìn)入百度,搜索“微信大數據”。一是從百度微信大數據開(kāi)放微信公眾號在線(xiàn)數據查詢(xún)工具。
2、 進(jìn)入頁(yè)面后,屏幕上有一個(gè)顯眼的輸入框。輸入微信公眾號或微信賬號名稱(chēng)(輸入微信賬號更準確),點(diǎn)擊查詢(xún)。
3、 查詢(xún)后,進(jìn)入數據展示頁(yè)面。在這個(gè)頁(yè)面上,我們可以清楚地看到這個(gè)微信公眾號的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量和平均點(diǎn)贊數。此外,公眾號的發(fā)布周期一目了然。
4、 另外,在頁(yè)面底部,還對微信公眾號進(jìn)行了進(jìn)一步的分析。頭條和非頭條數據一目了然;另外,還分析了單個(gè)文章的數據。
注意:查詢(xún)微信公眾號時(shí)最好使用微信公眾號,因為微信公眾號很多都沒(méi)有認證,而且名字是一樣的。按名稱(chēng)查詢(xún)時(shí)很容易混淆。
微信公眾平臺公眾號文章如何添加音樂(lè )插件?
如何將微信公眾號名片一次轉發(fā)給多個(gè)群或人? 查看全部
querylist采集微信公眾號文章(微信公眾號怎么分析閱讀量贊量,平均點(diǎn)贊量的詳細教程)
微信公眾號如何分析閱讀量?要想做好微信,必須學(xué)會(huì )分析微信公眾號的訪(fǎng)問(wèn)數據。今天教大家如何使用微信分析公眾號數據中的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量、平均點(diǎn)贊數。金額的詳細教程,有需要的朋友可以參考
一般我們查詢(xún)別人的微信公眾號數據時(shí),由于我們沒(méi)有微信公眾號,只能一一查詢(xún)閱讀量、點(diǎn)贊等數據,效率很低。大家推薦一個(gè)更快的查詢(xún)微信數據的方法。
1、 用電腦打開(kāi)瀏覽器(不支持IE瀏覽器),進(jìn)入百度,搜索“微信大數據”。一是從百度微信大數據開(kāi)放微信公眾號在線(xiàn)數據查詢(xún)工具。

2、 進(jìn)入頁(yè)面后,屏幕上有一個(gè)顯眼的輸入框。輸入微信公眾號或微信賬號名稱(chēng)(輸入微信賬號更準確),點(diǎn)擊查詢(xún)。

3、 查詢(xún)后,進(jìn)入數據展示頁(yè)面。在這個(gè)頁(yè)面上,我們可以清楚地看到這個(gè)微信公眾號的歷史最高閱讀量、最高點(diǎn)贊數、平均閱讀量和平均點(diǎn)贊數。此外,公眾號的發(fā)布周期一目了然。
4、 另外,在頁(yè)面底部,還對微信公眾號進(jìn)行了進(jìn)一步的分析。頭條和非頭條數據一目了然;另外,還分析了單個(gè)文章的數據。

注意:查詢(xún)微信公眾號時(shí)最好使用微信公眾號,因為微信公眾號很多都沒(méi)有認證,而且名字是一樣的。按名稱(chēng)查詢(xún)時(shí)很容易混淆。
微信公眾平臺公眾號文章如何添加音樂(lè )插件?
如何將微信公眾號名片一次轉發(fā)給多個(gè)群或人?
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-09-26 04:38
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理
二,。新文本
三,。超鏈接
四,。查找文章@>
2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包
一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求
二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量
三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲
二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值
三,。查看數據內容
四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取
通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()
二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token 查看全部
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖)
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理

二,。新文本

三,。超鏈接

四,。查找文章@>

2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包

一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求

二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量

三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲

二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值

三,。查看數據內容

四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取


通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()

二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2021-09-26 04:37
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理
二,。新文本
三,。超鏈接
四,。查找文章@>
2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包
一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求
二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量
三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲
二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值
三,。查看數據內容
四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取
通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()
二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token 查看全部
querylist采集微信公眾號文章(I.素材管理II.新建圖文III.超鏈接IV.查找文章(圖)
)
使用官方帳戶(hù)官方帳戶(hù)獲取所需信息。首先,它應該搜索其官方賬戶(hù)中的文章>或公共號碼,并分析數據包中的信息。該過(guò)程中最重要的幾點(diǎn)是:
1.調用接口以查找文章@>
轉到主頁(yè)->;物料管理->;新圖形->;超鏈接->;查找文章@>
一,。物資管理

二,。新文本

三,。超鏈接

四,。查找文章@>

2.獲取所有相關(guān)的官方帳戶(hù)信息
輸入關(guān)鍵字并單擊搜索后,相應的數據包將顯示在右側。在這里更容易找到。選擇XHR后,將只顯示一個(gè)唯一的數據包

一,。查看訪(fǎng)問(wèn)參數
選擇它,選擇標題欄并滑動(dòng)到底部以查看一系列請求參數。更重要的參數是令牌、查詢(xún)(搜索關(guān)鍵字)、開(kāi)始(起始值)和計數(每頁(yè)顯示的值)。您還可以在標題中看到數據的真實(shí)URL,然后向他發(fā)送請求

二,。查看數據包內容
官方帳戶(hù)是官方帳戶(hù)
可以查看包中返回的所有內容(通常為JSON格式),并檢查內容是否與頁(yè)面上的內容相對應。在這里,我們可以在返回的數據列表中看到每個(gè)官方賬戶(hù)的信息,包括fakeid(訪(fǎng)問(wèn)官方賬戶(hù)后將使用文章@>)、公眾號名稱(chēng)、公眾號和總搜索量

三,。過(guò)程分析
通過(guò)模擬登錄獲得cookie后,我們訪(fǎng)問(wèn)主頁(yè)以獲取URL上的令牌ID,并通過(guò)向捕獲的數據包上的真實(shí)URL發(fā)送請求和數據來(lái)獲取相應的信息。在返回的信息中,我們通過(guò)解析總量來(lái)判斷總量,更改“開(kāi)始翻頁(yè)”的值,最后將信息寫(xiě)入文件
class Public(metaclass=SingletonType):
def __init__(self, search_key, token, cookie):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36'
}
self.data = {
'action': 'search_biz',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'random': '0.012103784566473319',
'query': self.search_key,
'count': '5'
}
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['total']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
def parse_public(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_data(self):
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_public(num)['list']:
yield {
"name": data['nickname'],
"id": data['fakeid'],
'number': data['alias']
}
time.sleep(random.randint(1, 3))
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
3.抓斗文章@>
在“官方帳號”下,選擇相應的官方帳號并執行數據包捕獲
可以查看新數據包,包括下的所有文章@>列表
I數據包捕獲

二,。查看請求參數
顯然,我們之前獲得的偽造信息在這里使用。其他一切都和以前一樣。查詢(xún)也是一個(gè)搜索關(guān)鍵字。指定查詢(xún)后,將返回相關(guān)的搜索詞。如果未指定,則默認為空,并返回默認值

三,。查看數據內容

四,。過(guò)程分析
模擬登陸后獲取cookie和token,fakeid可以自行獲取,查閱上一部分獲取官方賬戶(hù)信息的內容,然后將請求發(fā)送到數據包的真實(shí)URL,通過(guò)app解析返回的數據。msg_ucnt獲取總量、更改開(kāi)始值、翻頁(yè)、獲取文章@>標題、創(chuàng )建時(shí)間(時(shí)間戳需要轉換為時(shí)間格式)、文章@>簡(jiǎn)要說(shuō)明、文章@>鏈接等信息,最后執行寫(xiě)入文件操作
class Articls(metaclass=SingletonType):
def __init__(self, token, fakeid, cookie, search_key=""):
self.search_key = search_key
self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
self.headers = {
'cookie': cookie,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'
}
self.data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"count": "5",
"query": self.search_key,
"fakeid": fakeid,
"type": "9",
}
def parse_articles(self, num):
self.data['begin'] = num
content = requests.get(self.url, headers=self.headers, params=self.data).json()
return content
def get_total(self):
self.data['begin'] = 0
content = requests.get(self.url, headers=self.headers, params=self.data).json()
total = content['app_msg_cnt']
if total % 5:
return int(total / 5) + 1
else:
return int(total / 5)
@staticmethod
def convert_2_time(stamp):
return time.strftime("%Y-%m-%d", time.localtime(stamp))
def get_data(self):
if self.get_total():
for num in range(0, self.get_total() + 1, 5):
for data in self.parse_articles(num)['app_msg_list']:
yield {
"title": data['title'],
"create_time": self.convert_2_time(data['create_time']),
# 摘要
'digest': data['digest'],
'link': data['link']
}
time.sleep(random.randint(1, 3))
else:
print("No search item")
exit()
def write_data(result, filename):
for data in result:
print(data)
with open(filename, 'a', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
4.模擬登錄
我們都知道具體的操作流程?,F在我們缺少兩樣東西,餅干和代幣。我們仔細觀(guān)察主頁(yè)。代幣隨處可見(jiàn)。HTML代碼和URL隨處可見(jiàn)。我們可以簡(jiǎn)單地從URL獲取cookies。我們可以通過(guò)selenium登錄后獲取cookies
一,。Cookie獲取


通過(guò)selenium調用Chrome瀏覽器以輸入用戶(hù)名和密碼。登錄后單擊“睡眠”一段時(shí)間以?huà)呙栌脩?hù)的代碼。登錄成功后,再次訪(fǎng)問(wèn)主頁(yè)并獲取要寫(xiě)入文件的cookie(是否寫(xiě)入文件取決于您的個(gè)人偏好,您可以返回)
def login(username, passwd):
cookies = {}
driver = webdriver.Chrome() # 谷歌驅動(dòng)
driver.get('https://mp.weixin.qq.com/')
# 用戶(hù)名
driver.find_element_by_xpath('//input[@name="account"]').clear()
driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)
driver.find_element_by_xpath('//input[@name="password"]').clear()
driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)
# 登錄
driver.find_element_by_xpath('//a[@class="btn_login"]').click()
time.sleep(20)
# 獲取cookie
driver.get('https://mp.weixin.qq.com/')
time.sleep(5)
cookie_items = driver.get_cookies()
for cookie_item in cookie_items:
cookies[cookie_item['name']] = cookie_item['value']
with open('cookie.txt', 'w') as f:
f.write(json.dumps(cookies))
driver.close()

二,。代幣獲取
讀取文件解析cookie,啟動(dòng)主頁(yè)請求,并在獲得令牌后將其與cookie一起返回
def get_cookie_token():
url = 'https://mp.weixin.qq.com'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.169 Safari/537.36',
'host': 'mp.weixin.qq.com',
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
result = []
for k, v in cookies.items():
result.append(k + '=' + v)
return "; ".join(result), token
querylist采集微信公眾號文章(注冊一下微信公眾號里的內容百度可是沒(méi)收錄的 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 206 次瀏覽 ? 2021-09-26 01:11
)
由于微信流量封閉,很難輕易看到微信內容。為了攀登微信公眾號的文章,一些網(wǎng)民用Python實(shí)現了這一點(diǎn)。讓我們看看他的實(shí)現思想和代碼。要知道微信公眾號的內容,百度不是收錄,但如果可以做到的話(huà),它是非常扭曲的。p>
開(kāi)發(fā)工具
思路
首先啟動(dòng)uuURL=“,掃描代碼注冊微信公共平臺,如果有,直接忽略,掃描代碼登錄。(只需注冊個(gè)人訂閱號),使用selenium自動(dòng)操作代碼掃描登錄獲取cookie值,然后用cookie響應
要先下載webdriver插件,請下載相應的Google瀏覽器版本。下載后,您將獲得chromedriver.exe,然后將chromedriver.exe放在python解釋器的python.exe文件的同級目錄中。作為響應,返回web源代碼和令牌值。令牌值為時(shí)效
首先打開(kāi)官方帳戶(hù)并在編輯文本時(shí)打開(kāi)超鏈接。p>
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
按F12查看與官方帳戶(hù)對應的偽造值。p>
抓取微信公眾號文章
用Python
抓取微信公眾號文章
用Python
翻開(kāi)頁(yè)面以打開(kāi)標題并返回第一頁(yè)的URL地址
第2頁(yè)地址
找到法律和法規
# !/usr/bin/nev python
# -*-coding:utf8-*-
import tkinter as tk
from selenium import webdriver
import time, re, jsonpath, xlwt
from requests_html import HTMLSession
session = HTMLSession()
class GZHSpider(object):
def __init__(self):
"""定義可視化窗口,并設置窗口和主題大小布局"""
self.window = tk.Tk()
self.window.title('公眾號信息采集')
self.window.geometry('800x600')
"""創(chuàng )建label_user按鈕,與說(shuō)明書(shū)"""
self.label_user = tk.Label(self.window, text='需要爬取的公眾號:', font=('Arial', 12), width=30, height=2)
self.label_user.pack()
"""創(chuàng )建label_user關(guān)聯(lián)輸入"""
self.entry_user = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_user.pack(after=self.label_user)
"""創(chuàng )建label_passwd按鈕,與說(shuō)明書(shū)"""
self.label_passwd = tk.Label(self.window, text="爬取多少頁(yè):(小于100)", font=('Arial', 12), width=30, height=2)
self.label_passwd.pack()
"""創(chuàng )建label_passwd關(guān)聯(lián)輸入"""
self.entry_passwd = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_passwd.pack(after=self.label_passwd)
"""創(chuàng )建Text富文本框,用于按鈕操作結果的展示"""
self.text1 = tk.Text(self.window, font=('Arial', 12), width=85, height=22)
self.text1.pack()
"""定義按鈕1,綁定觸發(fā)事件方法"""
self.button_1 = tk.Button(self.window, text='爬取', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_1)
self.button_1.pack(before=self.text1)
"""定義按鈕2,綁定觸發(fā)事件方法"""
self.button_2 = tk.Button(self.window, text='清除', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_2)
self.button_2.pack(anchor="e")
def parse_hit_click_1(self):
"""定義觸發(fā)事件1,調用main函數"""
user_name = self.entry_user.get()
pass_wd = int(self.entry_passwd.get())
self.main(user_name, pass_wd)
def main(self, user_name, pass_wd):
# 網(wǎng)頁(yè)登錄
driver_path = r'D:\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://mp.weixin.qq.com/')
time.sleep(2)
# 網(wǎng)頁(yè)最大化
driver.maximize_window()
# 拿微信掃描登錄
time.sleep(20)
# 獲得登錄的cookies
cookies_list = driver.get_cookies()
# 轉化成能用的cookie格式
cookie = [item["name"] + "=" + item["value"] for item in cookies_list]
cookie_str = '; '.join(item for item in cookie)
# 請求頭
headers_1 = {
'cookie': cookie_str,
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36'
}
# 起始地址
start_url = 'https://mp.weixin.qq.com/'
response = session.get(start_url, headers=headers_1).content.decode()
# 拿到token值,token值是有時(shí)效性的
token = re.findall(r'token=(\d+)', response)[0]
# 搜索出所有跟輸入的公眾號有關(guān)的
next_url = f'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={user_name}&token=' \
f'{token}&lang=zh_CN&f=json&ajax=1'
# 獲取響應
response_1 = session.get(next_url, headers=headers_1).content.decode()
# 拿到fakeid的值,確定公眾號,唯一的
fakeid = re.findall(r'"fakeid":"(.*?)",', response_1)[0]
# 構造公眾號的url地址
next_url_2 = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
headers_2 = {
'cookie': cookie_str,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36',
'referer': f'https://mp.weixin.qq.com/cgi-bin/appmsgtemplate?action=edit&lang=zh_CN&token={token}',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'x-requested-with': 'XMLHttpRequest'
}
# 表的創(chuàng )建
workbook = xlwt.Workbook(encoding='gbk', style_compression=0)
sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
j = 1
# 構造表頭
sheet.write(0, 0, '時(shí)間')
sheet.write(0, 1, '標題')
sheet.write(0, 2, '地址')
# 循環(huán)翻頁(yè)
for i in range(pass_wd):
data["begin"] = i * 5
time.sleep(3)
# 獲取響應的json數據
response_2 = session.get(next_url_2, params=data, headers=headers_2).json()
# jsonpath 獲取時(shí)間,標題,地址
title_list = jsonpath.jsonpath(response_2, '$..title')
url_list = jsonpath.jsonpath(response_2, '$..link')
create_time_list = jsonpath.jsonpath(response_2, '$..create_time')
# 將時(shí)間戳轉化為北京時(shí)間
list_1 = []
for create_time in create_time_list:
time_local = time.localtime(int(create_time))
time_1 = time.strftime("%Y-%m-%d", time_local)
time_2 = time.strftime("%H:%M:%S", time_local)
time_3 = time_1 + ' ' + time_2
list_1.append(time_3)
# for循環(huán)遍歷
for times, title, url in zip(list_1, title_list, url_list):
# 其中的'0-行, 0-列'指定表中的單元
sheet.write(j, 0, times)
sheet.write(j, 1, title)
sheet.write(j, 2, url)
j = j + 1
# 窗口顯示進(jìn)程
self.text1.insert("insert", f'*****************第{i+1}頁(yè)爬取成功*****************')
time.sleep(2)
self.text1.insert("insert", '\n ')
self.text1.insert("insert", '\n ')
# 最后保存成功
workbook.save(f'{user_name}公眾號信息.xls')
print(f"*********{user_name}公眾號信息保存成功*********")
def parse_hit_click_2(self):
"""定義觸發(fā)事件2,刪除文本框中內容"""
self.entry_user.delete(0, "end")
self.entry_passwd.delete(0, "end")
self.text1.delete("1.0", "end")
def center(self):
"""創(chuàng )建窗口居中函數方法"""
ws = self.window.winfo_screenwidth()
hs = self.window.winfo_screenheight()
x = int((ws / 2) - (800 / 2))
y = int((hs / 2) - (600 / 2))
self.window.geometry('{}x{}+{}+{}'.format(800, 600, x, y))
def run_loop(self):
"""禁止修改窗體大小規格"""
self.window.resizable(False, False)
"""窗口居中"""
self.center()
"""窗口維持--持久化"""
self.window.mainloop()
if __name__ == '__main__':
g = GZHSpider()
g.run_loop() 查看全部
querylist采集微信公眾號文章(注冊一下微信公眾號里的內容百度可是沒(méi)收錄的
)
由于微信流量封閉,很難輕易看到微信內容。為了攀登微信公眾號的文章,一些網(wǎng)民用Python實(shí)現了這一點(diǎn)。讓我們看看他的實(shí)現思想和代碼。要知道微信公眾號的內容,百度不是收錄,但如果可以做到的話(huà),它是非常扭曲的。p>
開(kāi)發(fā)工具
思路
首先啟動(dòng)uuURL=“,掃描代碼注冊微信公共平臺,如果有,直接忽略,掃描代碼登錄。(只需注冊個(gè)人訂閱號),使用selenium自動(dòng)操作代碼掃描登錄獲取cookie值,然后用cookie響應
要先下載webdriver插件,請下載相應的Google瀏覽器版本。下載后,您將獲得chromedriver.exe,然后將chromedriver.exe放在python解釋器的python.exe文件的同級目錄中。作為響應,返回web源代碼和令牌值。令牌值為時(shí)效
首先打開(kāi)官方帳戶(hù)并在編輯文本時(shí)打開(kāi)超鏈接。p>

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python
按F12查看與官方帳戶(hù)對應的偽造值。p>

抓取微信公眾號文章
用Python

抓取微信公眾號文章
用Python
翻開(kāi)頁(yè)面以打開(kāi)標題并返回第一頁(yè)的URL地址
第2頁(yè)地址
找到法律和法規
# !/usr/bin/nev python
# -*-coding:utf8-*-
import tkinter as tk
from selenium import webdriver
import time, re, jsonpath, xlwt
from requests_html import HTMLSession
session = HTMLSession()
class GZHSpider(object):
def __init__(self):
"""定義可視化窗口,并設置窗口和主題大小布局"""
self.window = tk.Tk()
self.window.title('公眾號信息采集')
self.window.geometry('800x600')
"""創(chuàng )建label_user按鈕,與說(shuō)明書(shū)"""
self.label_user = tk.Label(self.window, text='需要爬取的公眾號:', font=('Arial', 12), width=30, height=2)
self.label_user.pack()
"""創(chuàng )建label_user關(guān)聯(lián)輸入"""
self.entry_user = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_user.pack(after=self.label_user)
"""創(chuàng )建label_passwd按鈕,與說(shuō)明書(shū)"""
self.label_passwd = tk.Label(self.window, text="爬取多少頁(yè):(小于100)", font=('Arial', 12), width=30, height=2)
self.label_passwd.pack()
"""創(chuàng )建label_passwd關(guān)聯(lián)輸入"""
self.entry_passwd = tk.Entry(self.window, show=None, font=('Arial', 14))
self.entry_passwd.pack(after=self.label_passwd)
"""創(chuàng )建Text富文本框,用于按鈕操作結果的展示"""
self.text1 = tk.Text(self.window, font=('Arial', 12), width=85, height=22)
self.text1.pack()
"""定義按鈕1,綁定觸發(fā)事件方法"""
self.button_1 = tk.Button(self.window, text='爬取', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_1)
self.button_1.pack(before=self.text1)
"""定義按鈕2,綁定觸發(fā)事件方法"""
self.button_2 = tk.Button(self.window, text='清除', font=('Arial', 12), width=10, height=1,
command=self.parse_hit_click_2)
self.button_2.pack(anchor="e")
def parse_hit_click_1(self):
"""定義觸發(fā)事件1,調用main函數"""
user_name = self.entry_user.get()
pass_wd = int(self.entry_passwd.get())
self.main(user_name, pass_wd)
def main(self, user_name, pass_wd):
# 網(wǎng)頁(yè)登錄
driver_path = r'D:\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://mp.weixin.qq.com/')
time.sleep(2)
# 網(wǎng)頁(yè)最大化
driver.maximize_window()
# 拿微信掃描登錄
time.sleep(20)
# 獲得登錄的cookies
cookies_list = driver.get_cookies()
# 轉化成能用的cookie格式
cookie = [item["name"] + "=" + item["value"] for item in cookies_list]
cookie_str = '; '.join(item for item in cookie)
# 請求頭
headers_1 = {
'cookie': cookie_str,
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36'
}
# 起始地址
start_url = 'https://mp.weixin.qq.com/'
response = session.get(start_url, headers=headers_1).content.decode()
# 拿到token值,token值是有時(shí)效性的
token = re.findall(r'token=(\d+)', response)[0]
# 搜索出所有跟輸入的公眾號有關(guān)的
next_url = f'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={user_name}&token=' \
f'{token}&lang=zh_CN&f=json&ajax=1'
# 獲取響應
response_1 = session.get(next_url, headers=headers_1).content.decode()
# 拿到fakeid的值,確定公眾號,唯一的
fakeid = re.findall(r'"fakeid":"(.*?)",', response_1)[0]
# 構造公眾號的url地址
next_url_2 = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
headers_2 = {
'cookie': cookie_str,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36',
'referer': f'https://mp.weixin.qq.com/cgi-bin/appmsgtemplate?action=edit&lang=zh_CN&token={token}',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'x-requested-with': 'XMLHttpRequest'
}
# 表的創(chuàng )建
workbook = xlwt.Workbook(encoding='gbk', style_compression=0)
sheet = workbook.add_sheet('test', cell_overwrite_ok=True)
j = 1
# 構造表頭
sheet.write(0, 0, '時(shí)間')
sheet.write(0, 1, '標題')
sheet.write(0, 2, '地址')
# 循環(huán)翻頁(yè)
for i in range(pass_wd):
data["begin"] = i * 5
time.sleep(3)
# 獲取響應的json數據
response_2 = session.get(next_url_2, params=data, headers=headers_2).json()
# jsonpath 獲取時(shí)間,標題,地址
title_list = jsonpath.jsonpath(response_2, '$..title')
url_list = jsonpath.jsonpath(response_2, '$..link')
create_time_list = jsonpath.jsonpath(response_2, '$..create_time')
# 將時(shí)間戳轉化為北京時(shí)間
list_1 = []
for create_time in create_time_list:
time_local = time.localtime(int(create_time))
time_1 = time.strftime("%Y-%m-%d", time_local)
time_2 = time.strftime("%H:%M:%S", time_local)
time_3 = time_1 + ' ' + time_2
list_1.append(time_3)
# for循環(huán)遍歷
for times, title, url in zip(list_1, title_list, url_list):
# 其中的'0-行, 0-列'指定表中的單元
sheet.write(j, 0, times)
sheet.write(j, 1, title)
sheet.write(j, 2, url)
j = j + 1
# 窗口顯示進(jìn)程
self.text1.insert("insert", f'*****************第{i+1}頁(yè)爬取成功*****************')
time.sleep(2)
self.text1.insert("insert", '\n ')
self.text1.insert("insert", '\n ')
# 最后保存成功
workbook.save(f'{user_name}公眾號信息.xls')
print(f"*********{user_name}公眾號信息保存成功*********")
def parse_hit_click_2(self):
"""定義觸發(fā)事件2,刪除文本框中內容"""
self.entry_user.delete(0, "end")
self.entry_passwd.delete(0, "end")
self.text1.delete("1.0", "end")
def center(self):
"""創(chuàng )建窗口居中函數方法"""
ws = self.window.winfo_screenwidth()
hs = self.window.winfo_screenheight()
x = int((ws / 2) - (800 / 2))
y = int((hs / 2) - (600 / 2))
self.window.geometry('{}x{}+{}+{}'.format(800, 600, x, y))
def run_loop(self):
"""禁止修改窗體大小規格"""
self.window.resizable(False, False)
"""窗口居中"""
self.center()
"""窗口維持--持久化"""
self.window.mainloop()
if __name__ == '__main__':
g = GZHSpider()
g.run_loop()
querylist采集微信公眾號文章(querymap采集微信公眾號文章地址采集商品地址(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2021-09-25 11:00
querylist采集微信公眾號文章地址querymap采集商品地址歡迎大家積極參與哦,我們會(huì )盡力完成,謝謝大家啦~如果你覺(jué)得文章還不錯,也可以提供給我們哦,需要文章地址的話(huà)可以私信我哦(*∩_∩*)你有什么好奇怪的問(wèn)題也可以提哦,比如我querymap完沒(méi)有進(jìn)展?想看一下querymap是如何實(shí)現的,想看一下querymap做了哪些優(yōu)化?有什么技術(shù)上的問(wèn)題也可以問(wèn)呢,我們也會(huì )盡力回答你的呢,點(diǎn)點(diǎn)滴滴,一定有收獲!關(guān)注我們,我們下篇文章,見(jiàn)!。
沒(méi)寫(xiě)過(guò)xml,直接用了java的querymap,單頁(yè)面的話(huà)建議用個(gè)java組件。
分詞可以用jieba,分詞的性能還是非常不錯的。
要想回答你的問(wèn)題,先要了解哪個(gè)部分用到xml,現在搜索的用到的其實(shí)是es。
1、電商綜合服務(wù)等相關(guān)服務(wù),涵蓋了購物車(chē)、倉庫、發(fā)貨等等。
2、類(lèi)目中心,包含了類(lèi)目、價(jià)格等等。
3、品牌中心,主要包含三點(diǎn),一個(gè)是品牌、一個(gè)是產(chǎn)品、一個(gè)是故事。
4、品牌故事,包含大品牌故事、創(chuàng )始人背景等等。
5、消費者故事,主要針對消費者來(lái)進(jìn)行分析的。接下來(lái)需要做的就是進(jìn)行查詢(xún),querymap就是一個(gè)只處理xml字符串的方法,一般你第一個(gè)方法輸入的是url或者http請求,數據交給es先進(jìn)行處理,用來(lái)分析數據,結果再返回給你。有點(diǎn)像面向對象的api開(kāi)發(fā)。用法可以查看elasticsearches.pool.querymap(url);當然你可以根據自己業(yè)務(wù)進(jìn)行修改。 查看全部
querylist采集微信公眾號文章(querymap采集微信公眾號文章地址采集商品地址(組圖))
querylist采集微信公眾號文章地址querymap采集商品地址歡迎大家積極參與哦,我們會(huì )盡力完成,謝謝大家啦~如果你覺(jué)得文章還不錯,也可以提供給我們哦,需要文章地址的話(huà)可以私信我哦(*∩_∩*)你有什么好奇怪的問(wèn)題也可以提哦,比如我querymap完沒(méi)有進(jìn)展?想看一下querymap是如何實(shí)現的,想看一下querymap做了哪些優(yōu)化?有什么技術(shù)上的問(wèn)題也可以問(wèn)呢,我們也會(huì )盡力回答你的呢,點(diǎn)點(diǎn)滴滴,一定有收獲!關(guān)注我們,我們下篇文章,見(jiàn)!。
沒(méi)寫(xiě)過(guò)xml,直接用了java的querymap,單頁(yè)面的話(huà)建議用個(gè)java組件。
分詞可以用jieba,分詞的性能還是非常不錯的。
要想回答你的問(wèn)題,先要了解哪個(gè)部分用到xml,現在搜索的用到的其實(shí)是es。
1、電商綜合服務(wù)等相關(guān)服務(wù),涵蓋了購物車(chē)、倉庫、發(fā)貨等等。
2、類(lèi)目中心,包含了類(lèi)目、價(jià)格等等。
3、品牌中心,主要包含三點(diǎn),一個(gè)是品牌、一個(gè)是產(chǎn)品、一個(gè)是故事。
4、品牌故事,包含大品牌故事、創(chuàng )始人背景等等。
5、消費者故事,主要針對消費者來(lái)進(jìn)行分析的。接下來(lái)需要做的就是進(jìn)行查詢(xún),querymap就是一個(gè)只處理xml字符串的方法,一般你第一個(gè)方法輸入的是url或者http請求,數據交給es先進(jìn)行處理,用來(lái)分析數據,結果再返回給你。有點(diǎn)像面向對象的api開(kāi)發(fā)。用法可以查看elasticsearches.pool.querymap(url);當然你可以根據自己業(yè)務(wù)進(jìn)行修改。
querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 169 次瀏覽 ? 2021-09-22 03:05
一.ideas
我們通過(guò)網(wǎng)頁(yè)上微信公共平臺的圖形信息中的超鏈接獲得我們需要的界面圖形信息
超鏈接
從界面可以得到相應的微信公眾號和相應的微信公眾號文章. p>
二.界面分析
獲取微信公眾號界面:
參數:
動(dòng)作=搜索業(yè)務(wù)
開(kāi)始=0
計數=5
query=正式帳戶(hù)名
令牌=對應于每個(gè)帳戶(hù)的令牌值
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
所以這個(gè)界面只需要token,查詢(xún)的是您需要搜索的官方賬號,登錄后可以通過(guò)網(wǎng)頁(yè)獲取token。p>
微信公眾號
獲取官方賬號對應的文章接口:
參數:
動(dòng)作=列表uux
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
質(zhì)疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
在這個(gè)接口中,我們需要獲得上一步的令牌和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲得。所以我們可以得到微信公眾號的數據文章. p>
微信公眾號
三.實(shí)現
步驟1:
首先,我們需要通過(guò)selenium模擬登錄,然后獲得cookie和相應的令牌
def微信登錄(用戶(hù)、密碼):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#單擊以切換到帳戶(hù)密碼輸入
瀏覽器。通過(guò)xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。單擊()
睡眠(2)
#模擬用戶(hù)點(diǎn)擊
input\u user=browser。通過(guò)xpath(//input[@name='account'])查找元素
輸入用戶(hù)。發(fā)送密鑰(用戶(hù))
input_password=browser。通過(guò)xpath(//input[@name='password'])查找_元素
輸入密碼。發(fā)送密鑰(密碼)
睡眠(2)
#單擊登錄
瀏覽器。通過(guò)xpath(//a[@class='btn\u login'])查找元素。單擊()
睡眠(2)
#微信登錄驗證
打?。?請掃描二維碼')
睡眠(20)
#刷新當前頁(yè)面
browser.get('#39;)
睡眠(5)
#獲取指向當前網(wǎng)頁(yè)的鏈接
url=browser.current\u url
#獲取當前cookie
cookies=瀏覽器。獲取cookies()
對于Cookie中的項目:
post[項目['name']]=項目['value']
#轉換為字符串
cookie_str=json.dumps(post)
#本地存儲
將open('cookie.txt','w+',encoding='utf-8')作為f:
f、 寫(xiě)入(cookie_str)
打?。?成功在本地保存cookie')
#切片當前網(wǎng)頁(yè)鏈接并獲取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定義一個(gè)字典來(lái)存儲數據
paramdict={}
對于列表中的項目:
參數[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回參數['token']
定義登錄方式,參數為登錄賬號和密碼,然后定義字典存儲cookie值,模擬用戶(hù)輸入相應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃描代碼
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和令牌,然后返回
步驟2:
1.請求獲取相應的官方賬戶(hù)界面并獲取偽造ID
我們需要
url='#39
標題={
“主持人”:“
“用戶(hù)代理”:“Mozilla/5.0(Windows NT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像壁虎)鉻/86.0.424 0.183狩獵/537.36 Edg/86.0.62 2.63"
}
將open('cookie.txt','r',encoding='utf-8')作為f:
cookie=f.read()
cookies=json.loads(cookie)
resp=requests.get(url=url,headers=headers,cookies=cookies)
搜索url='#39
參數={
“操作”:“搜索業(yè)務(wù)”
“開(kāi)始”:“0”
“計數”:“5”
“查詢(xún)”:搜索正式帳戶(hù)名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我們獲得的令牌和cookie,然后返回JSON數據
通過(guò)requests.get request獲取微信公眾號
lists=search_resp.json().get('list')[0]
一,
,通過(guò)上面的代碼,您可以得到相應的官方賬戶(hù)數據
fakeid=lists.get('fakeid')
一,
通過(guò)上述代碼可以獲得相應的偽造ID
2.請求獲取微信官方賬號文章接口,獲取文章數據
我們需要
appmsg_url='#39
參數u數據={
“操作”:“列表”
“開(kāi)始”:“0”
“計數”:“5”
"假":假,
“類(lèi)型”:“9”
“查詢(xún)”:“
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
appmsg_resp=requests.get(url=appmsg_url,cookies=cookies,headers=headers,params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口來(lái)獲取返回的JSON數據
我們已經(jīng)實(shí)現了微信公眾號的爬網(wǎng)文章.
四.summary
通過(guò)微信官方賬號文章爬行,需要掌握selenium的用法和請求,以及如何獲取請求界面。但需要注意的是,當我們循環(huán)獲取文章時(shí),必須設置延遲時(shí)間,否則賬號很容易被阻塞,無(wú)法獲取返回的數據 查看全部
querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
一.ideas
我們通過(guò)網(wǎng)頁(yè)上微信公共平臺的圖形信息中的超鏈接獲得我們需要的界面圖形信息

超鏈接
從界面可以得到相應的微信公眾號和相應的微信公眾號文章. p>
二.界面分析
獲取微信公眾號界面:
參數:
動(dòng)作=搜索業(yè)務(wù)
開(kāi)始=0
計數=5
query=正式帳戶(hù)名
令牌=對應于每個(gè)帳戶(hù)的令牌值
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
所以這個(gè)界面只需要token,查詢(xún)的是您需要搜索的官方賬號,登錄后可以通過(guò)網(wǎng)頁(yè)獲取token。p>

微信公眾號
獲取官方賬號對應的文章接口:
參數:
動(dòng)作=列表uux
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
質(zhì)疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
在這個(gè)接口中,我們需要獲得上一步的令牌和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲得。所以我們可以得到微信公眾號的數據文章. p>

微信公眾號
三.實(shí)現
步驟1:
首先,我們需要通過(guò)selenium模擬登錄,然后獲得cookie和相應的令牌
def微信登錄(用戶(hù)、密碼):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#單擊以切換到帳戶(hù)密碼輸入
瀏覽器。通過(guò)xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。單擊()
睡眠(2)
#模擬用戶(hù)點(diǎn)擊
input\u user=browser。通過(guò)xpath(//input[@name='account'])查找元素
輸入用戶(hù)。發(fā)送密鑰(用戶(hù))
input_password=browser。通過(guò)xpath(//input[@name='password'])查找_元素
輸入密碼。發(fā)送密鑰(密碼)
睡眠(2)
#單擊登錄
瀏覽器。通過(guò)xpath(//a[@class='btn\u login'])查找元素。單擊()
睡眠(2)
#微信登錄驗證
打?。?請掃描二維碼')
睡眠(20)
#刷新當前頁(yè)面
browser.get('#39;)
睡眠(5)
#獲取指向當前網(wǎng)頁(yè)的鏈接
url=browser.current\u url
#獲取當前cookie
cookies=瀏覽器。獲取cookies()
對于Cookie中的項目:
post[項目['name']]=項目['value']
#轉換為字符串
cookie_str=json.dumps(post)
#本地存儲
將open('cookie.txt','w+',encoding='utf-8')作為f:
f、 寫(xiě)入(cookie_str)
打?。?成功在本地保存cookie')
#切片當前網(wǎng)頁(yè)鏈接并獲取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定義一個(gè)字典來(lái)存儲數據
paramdict={}
對于列表中的項目:
參數[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回參數['token']
定義登錄方式,參數為登錄賬號和密碼,然后定義字典存儲cookie值,模擬用戶(hù)輸入相應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃描代碼
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和令牌,然后返回
步驟2:
1.請求獲取相應的官方賬戶(hù)界面并獲取偽造ID
我們需要
url='#39
標題={
“主持人”:“
“用戶(hù)代理”:“Mozilla/5.0(Windows NT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像壁虎)鉻/86.0.424 0.183狩獵/537.36 Edg/86.0.62 2.63"
}
將open('cookie.txt','r',encoding='utf-8')作為f:
cookie=f.read()
cookies=json.loads(cookie)
resp=requests.get(url=url,headers=headers,cookies=cookies)
搜索url='#39
參數={
“操作”:“搜索業(yè)務(wù)”
“開(kāi)始”:“0”
“計數”:“5”
“查詢(xún)”:搜索正式帳戶(hù)名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我們獲得的令牌和cookie,然后返回JSON數據
通過(guò)requests.get request獲取微信公眾號
lists=search_resp.json().get('list')[0]
一,
,通過(guò)上面的代碼,您可以得到相應的官方賬戶(hù)數據
fakeid=lists.get('fakeid')
一,
通過(guò)上述代碼可以獲得相應的偽造ID
2.請求獲取微信官方賬號文章接口,獲取文章數據
我們需要
appmsg_url='#39
參數u數據={
“操作”:“列表”
“開(kāi)始”:“0”
“計數”:“5”
"假":假,
“類(lèi)型”:“9”
“查詢(xún)”:“
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
appmsg_resp=requests.get(url=appmsg_url,cookies=cookies,headers=headers,params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口來(lái)獲取返回的JSON數據
我們已經(jīng)實(shí)現了微信公眾號的爬網(wǎng)文章.
四.summary
通過(guò)微信官方賬號文章爬行,需要掌握selenium的用法和請求,以及如何獲取請求界面。但需要注意的是,當我們循環(huán)獲取文章時(shí),必須設置延遲時(shí)間,否則賬號很容易被阻塞,無(wú)法獲取返回的數據
querylist采集微信公眾號文章(如何通過(guò)微信公眾號后臺的“超鏈接”功能進(jìn)行爬取 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 366 次瀏覽 ? 2021-09-19 01:06
)
PS:如果你需要Python學(xué)習材料,你可以點(diǎn)擊下面的鏈接自己獲取
爬行的方法有很多
。今天,我們分享一種更簡(jiǎn)單的方式,通過(guò)微信官方賬號的超鏈接功能爬行??赡芤恍┖糜押献骰锇檫€沒(méi)有接觸到微信公眾號的背景。這是一張給你看的照片
在這里,一些好友可能會(huì )說(shuō),“我不能登錄到官方帳戶(hù)。什么?”p>
沒(méi)關(guān)系。每次我們想要得到我們想要的結果時(shí),Buddy都是我們的目標,但這不是我們研究的重點(diǎn)。我們關(guān)注爬行動(dòng)物的過(guò)程,我們是如何獲得目標數據的,所以我們不能登錄到官方的后臺帳號。在閱讀此文章之后,我們可能無(wú)法獲得最終的爬網(wǎng)結果。但是在閱讀了這篇文章文章之后,你也會(huì )有所收獲
一、初步準備
選擇正式帳號
為了爬行
點(diǎn)擊超鏈接-進(jìn)入編輯超鏈接界面-輸入搜索官方賬號
我們需要爬
今天我們以官方賬戶(hù)“數據分析”為例進(jìn)行介紹
謝謝你
點(diǎn)擊官方賬戶(hù)查看每個(gè)文章對應的標題信息
我們的目標是獲取文章標題和相應的鏈接
二、開(kāi)始爬行
爬蟲(chóng)三部曲:
1、請求網(wǎng)頁(yè)
首先,導入此爬蟲(chóng)程序所需的第三方庫
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
找到我們抓取的目標數據的位置,點(diǎn)擊搜索得到的包,得到目標網(wǎng)站和請求頭信息
請求網(wǎng)頁(yè)
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
print(html)
此處的請求標頭信息必須與cookie信息一起添加,否則無(wú)法獲取網(wǎng)頁(yè)信息
該網(wǎng)頁(yè)的請求結果如下圖所示。紅色框表示我們需要的文章標題和文章鏈接
2、parse網(wǎng)頁(yè)
從網(wǎng)頁(yè)響應結果可以看出,每個(gè)文章文章的標題和鏈接分別位于“title”標記和“cover”標記后面,因此我們可以使用正則表達式直接解析它們
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
分析結果如下
3、保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防觸發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
到目前為止,爬蟲(chóng)程序已經(jīng)完成。讓我們看一下最終結果
完整代碼
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
# 請求網(wǎng)頁(yè)
index=0
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
for i in range(2):#設置for循環(huán)實(shí)現翻頁(yè),爬取多頁(yè)內容,這里range括號內的參數可以更改
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin='+str(index)+'&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
# 解析網(wǎng)頁(yè)
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
# print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
# 保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防出發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
pass
pass
index += 5 查看全部
querylist采集微信公眾號文章(如何通過(guò)微信公眾號后臺的“超鏈接”功能進(jìn)行爬取
)
PS:如果你需要Python學(xué)習材料,你可以點(diǎn)擊下面的鏈接自己獲取
爬行的方法有很多
。今天,我們分享一種更簡(jiǎn)單的方式,通過(guò)微信官方賬號的超鏈接功能爬行??赡芤恍┖糜押献骰锇檫€沒(méi)有接觸到微信公眾號的背景。這是一張給你看的照片

在這里,一些好友可能會(huì )說(shuō),“我不能登錄到官方帳戶(hù)。什么?”p>
沒(méi)關(guān)系。每次我們想要得到我們想要的結果時(shí),Buddy都是我們的目標,但這不是我們研究的重點(diǎn)。我們關(guān)注爬行動(dòng)物的過(guò)程,我們是如何獲得目標數據的,所以我們不能登錄到官方的后臺帳號。在閱讀此文章之后,我們可能無(wú)法獲得最終的爬網(wǎng)結果。但是在閱讀了這篇文章文章之后,你也會(huì )有所收獲
一、初步準備
選擇正式帳號
為了爬行
點(diǎn)擊超鏈接-進(jìn)入編輯超鏈接界面-輸入搜索官方賬號
我們需要爬
今天我們以官方賬戶(hù)“數據分析”為例進(jìn)行介紹
謝謝你

點(diǎn)擊官方賬戶(hù)查看每個(gè)文章對應的標題信息

我們的目標是獲取文章標題和相應的鏈接
二、開(kāi)始爬行
爬蟲(chóng)三部曲:
1、請求網(wǎng)頁(yè)
首先,導入此爬蟲(chóng)程序所需的第三方庫
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
找到我們抓取的目標數據的位置,點(diǎn)擊搜索得到的包,得到目標網(wǎng)站和請求頭信息

請求網(wǎng)頁(yè)
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
print(html)
此處的請求標頭信息必須與cookie信息一起添加,否則無(wú)法獲取網(wǎng)頁(yè)信息
該網(wǎng)頁(yè)的請求結果如下圖所示。紅色框表示我們需要的文章標題和文章鏈接
2、parse網(wǎng)頁(yè)
從網(wǎng)頁(yè)響應結果可以看出,每個(gè)文章文章的標題和鏈接分別位于“title”標記和“cover”標記后面,因此我們可以使用正則表達式直接解析它們
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
分析結果如下

3、保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防觸發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
到目前為止,爬蟲(chóng)程序已經(jīng)完成。讓我們看一下最終結果

完整代碼
import re#用來(lái)解析網(wǎng)頁(yè)
import requests#用來(lái)請求網(wǎng)頁(yè)
import csv#用來(lái)保存數據
import time#用來(lái)設置每次爬取間隔的時(shí)間
# 請求網(wǎng)頁(yè)
index=0
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; [email?protected]; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65c4054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309ec4713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'
}#請求頭信息,這里cookie信息必須添加,否則得不到網(wǎng)頁(yè)信息
for i in range(2):#設置for循環(huán)實(shí)現翻頁(yè),爬取多頁(yè)內容,這里range括號內的參數可以更改
url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin='+str(index)+'&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'
response=requests.get(url,headers=headers)#得到響應內容
response.encoding='utf-8'#設置響應內容為utf-8格式
html=response.text#得到網(wǎng)頁(yè)的文本形式
# 解析網(wǎng)頁(yè)
title=re.findall('"title":"(.*?)"',html)#得到文章標題
cover=re.findall('"cover":"(.*?)"',html)#得到文章鏈接
all=zip(title,cover)#利用zip方法,將兩個(gè)列表中的數據一一對應
# print(list(all))#list是對zip方法得到的數據進(jìn)行解壓
# 保存數據
for data in all:#for循環(huán)遍歷列表
time.sleep(3)#每爬取一篇文章間隔3秒,以防出發(fā)反爬
with open('C:\\Users\\Administrator\\Desktop\\爬取公眾號文章.csv','a',encoding='utf-8-sig') as file:
#將數據保存到桌面
write=csv.writer(file)
write.writerow(data)
pass
pass
index += 5