按之前的文章我們已經可以獲取app及網頁的https/http請求的json數據:
https://www.cnblogs.com/i-love-python/p/11505669.html
在此基礎上可對微信公眾號文章數據進行抓取。
包括列表、瀏覽查看量、評論數據。(無需編碼登錄認證,不會封號)
列表數據:
列表數據獲取
列表為每個公眾號歷史數據入口,如圖紅框中的2部分。
列表數據可通過Fiddler在微信PC客戶端獲取,獲取的數據是json數據里面包含了文章標題,發布時間等信息。
這個列表信息是一個類似下面url的GET請求,該鏈接具有時效性,不過我們也可以更改其中的參數在有效時間內將列表數據抓取完,從fiddler中copy你的url后只需修改參數offset 從0 開始進行以此增加10即可。
https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&uin=Mjk0NjUyMDAxOA==&key=cc53f48e7cf7aa7ee97e6502e364529020d90d2dd6007000ab49617cc3fa2ad66ae709dd9b97b832411c03c6ed45b7670ca505fef6db4e9dd5bb89561a91086559ca9af84d45c0a282b8b6f1c5e25de3&pass_ticket=y5W0nBEs90w2+Q4IBMmR9Ac+nUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&username=&useraction=9&t=0.35340455407091587&scene=124&__biz=MzI5MTE1MTAxNg==&is_ok=1&fromplatform=2&f=json&offset=0&count=10
列表數據解析
json數據 general_msg_list的值為字符串 這是可通過json.loads()轉換 得到的list即為列表數據。
數據中最重要的四個字段如下:
datetime:文章發布時間的時間戳
fakeid:公眾號的fakeid 可對應到屬於哪個公眾號
title:文章的標題
content_url:正文的永久url鏈接(該GET鏈接不會失效可通過瀏覽器打開)
正文數據
正文內容數據的獲取比較簡單,瀏覽器打開上面的content_url永久鏈接,所以可通過網頁爬蟲系統進行解析,requests打開獲取里面文本P標簽也可。
瀏覽查看量、評論內容:
瀏覽查看量及評論的內容在手機端進行抓取。從列表頁點擊到正文頁時fiddler中可以獲取瀏覽量及評論內容對應的json請求。
歷史數據很多我們不可能人工每個數據進行點擊,這時我們就可以使用按鍵精靈這種第三方軟件模擬點擊
2個請求連接如下,具有時效性。
瀏覽、在看量POST請求:
https://mp.weixin.qq.com/mp/getappmsgext?f=json&mock=&uin=Mjk0NjUyMDAxOA%253D%253D&key=bd7df0327aba25f5efd11ee483618f49fbf2877dae17100330b8e7505b4f4edb069a00887127db8b641c3b9d58138c4080ae90056915673989c85037d943ccdaef473572b5a74a6d1ebc4cdacd8fcc03&pass_ticket=y5W0nBEs90w2%25252BQ4IBMmR9Ac%25252BnUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&wxtoken=777&devicetype=Windows%26nbsp%3B7&clientversion=62070141&__biz=MzI5MTE1MTAxNg%3D%3D&appmsg_token=1030_80FpOzQ4N34ooINO01C5KuGfD4amgFIQ_iZa6sKOTQroJYHuCZGQsMA-PJafRSuDFd4Vj89fkAJZ4F3Y&x5=0&f=json
評論內容GET:
https://mp.weixin.qq.com/mp/appmsg_comment?action=getcomment&scene=0&__biz=MzI5MTE1MTAxNg==&appmsgid=2650402689&idx=1&comment_id=1029375583785992192&offset=0&limit=100&uin=Mjk0NjUyMDAxOA%253D%253D&key=bd7df0327aba25f5efd11ee483618f49fbf2877dae17100330b8e7505b4f4edb069a00887127db8b641c3b9d58138c4080ae90056915673989c85037d943ccdaef473572b5a74a6d1ebc4cdacd8fcc03&pass_ticket=y5W0nBEs90w2%25252BQ4IBMmR9Ac%25252BnUr7wU3n2gnY4HozBUJaTy1pIPxM2Lpz60Bhv3Fe&wxtoken=777&devicetype=Windows%26nbsp%3B7&clientversion=62070141&__biz=MzI5MTE1MTAxNg%3D%3D&appmsg_token=1030_80FpOzQ4N34ooINO01C5KuGfD4amgFIQ_iZa6sKOTQroJYHuCZGQsMA-PJafRSuDFd4Vj89fkAJZ4F3Y&x5=0&f=json
列表、正文、瀏覽量數據關聯
三者的數據可通過字段sn進行關聯
列表數據的sn在content_url中
正文數據的sn在其url中
瀏覽量數據sn在其請求的request body中
和評論利用正文中的mid和評論中的appmsgid關聯
總結:
微信公眾號數據的獲取需手機和pc結合進行抓取,參數很多如果單純分析參數結構仿造請求獲取數據的難度很大,並且如果一旦接口參數變換又得重新分析。
所以利用Fiddler直接獲取json數據的方式是一種簡單且長久的方法,因為我們不用關心登錄認證的問題 只需降低抓取頻率便不會被封號。缺點:按鍵精靈模擬點擊有時出錯