采集微信公众号数据保存为json

这只是我以前想做的项目,现在完成了。别看代码多,其实都是写过的函数,爬虫写得多了,很多相似的功能都可以从其他项目中找到对应的函数,复制即用。

工具使用

fiddler classic
postman
chrome
pycharm

爬取思路

1.通过fiddler抓包微信客户端,定位到想要获取的公众号文章列表页,通常第一次抓包数据可能会不完整,此时清空fiddler后刷新一遍

采集微信公众号数据保存为json 第2张插图

2.复制url到postman中分析接口的参数信息,判断其用途、是否变化、是否是多余等。复制第一次ajax的url和第二次的url,对比参数的变化,可以发现变化的只有begin_msgid是变化的,此时我们就知道它是控制翻页的参数,但它是怎么来的呢?

3.我以前做的upupoo那个就用的类似的方法,直接到请求返回的json数据中查找,复制第二次的ajax请求url的begin_msgid值,发现标记到article_list里面的最后一条中,这时我们就知道,它的下一次请求会携带的begin_msgid的值在返回的json数据的第十条内。

4.以及在点击正序时会添加的参数is_reverse,再判断正序和倒序的is_reverse的值,然后就可以通过改变它的值来进行正序和倒序的爬取。

采集微信公众号数据保存为json 第3张插图采集微信公众号数据保存为json 第4张插图

5.构思代码实现,这有很多种方法,根据自己的习惯即可。

注意:如果是通过微信客户端复制链接到浏览器打开,它是没有 key、uin、pass_ticket、等关键参数的,而少了这些参数,像阅读数等一些数据就没有。

我这里的代码思路是,通过抓包获取ajax的请求链接,将它赋值给goal_url这个参数,从返回的json数据提取下一次begin_msgid的值等数据,通过一个字典来存储,判断is_reverse的值,经过分析,知道is_reverse的值在链接中的和json数据返回的是相反的,在处理其中的逻辑时,因为我想不出怎么通过一个判断联系起来,即is_reverse=0时的处理逻辑和is_reverse=1的处理逻辑 ,因为正序的返回是从1到总数据页数,倒序是从总书记页数到1。开始时我是想通过文章的pos_num的值来与总数据数比较,结果正序时没问题,倒序就提前退出递归了,因为总页数与倒序的第一个数是相等的。

在百思不得其解后,通过GPT给出的解决方法才成功,之后使用递归函数来一直获取数据直到数据列表为空退出。

期间遇到的困难:就是在正序和倒序的处理部分,其实我能想到更简单的,就是在goal_url中设置is_reverse这个参数就行了,但我就是想复制链接执行,不在链接上做更改,有点死脑筋了。所幸GPT能够理解我的提问,哈哈哈。

代码实现

采集微信公众号数据保存为json 第5张插图
此处内容已隐藏,评论后刷新即可查看!

运行成果

数据为空的是key的时效过了,需要重新抓包。

采集微信公众号数据保存为json 第6张插图

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
如若转载,请注明出处:https://www.zxki.cn/8678.html

上一篇 2024-1-13 00:00
下一篇 2024-1-13 10:15

相关推荐

发表评论

为了防止灌水评论,登录后即可评论!

还没有评论,快来抢沙发吧!