Fiddler微信公众号列表、浏览/查看量、评论数据抓取

按之前的文章我们已经可以获取app及网页的https/http请求的json数据:
https://www.cnblogs.com/i-love-python/p/11505669.html

在此基础上可对微信公众号文章数据进行抓取。
包括列表、浏览查看量、评论数据。(无需编码登录认证,不会封号)

列表数据:

列表数据获取

列表为每个公众号历史数据入口,如图红框中的2部分。
列表数据.png

列表数据可通过Fiddler在微信PC客户端获取,获取的数据是json数据里面包含了文章标题,发布时间等信息。

列表json.png
这个列表信息是一个类似下面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链接不会失效可通过浏览器打开)
列表json.png

正文数据

正文内容数据的获取比较简单,浏览器打开上面的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

浏览在看.png

评论内容.png

列表、正文、浏览量数据关联

三者的数据可通过字段sn进行关联
列表数据的sn在content_url中
正文数据的sn在其url中
浏览量数据sn在其请求的request body中

和评论利用正文中的mid和评论中的appmsgid关联

总结:

微信公众号数据的获取需手机和pc结合进行抓取,参数很多如果单纯分析参数结构仿造请求获取数据的难度很大,并且如果一旦接口参数变换又得重新分析。
所以利用Fiddler直接获取json数据的方式是一种简单且长久的方法,因为我们不用关心登录认证的问题 只需降低抓取频率便不会被封号。缺点:按键精灵模拟点击有时出错

posted @ 2019-10-14 22:21  古月月月胡  阅读(2374)  评论(0编辑  收藏  举报