基于Python采集爬取微信公众号历史数据


Posted in Python onNovember 27, 2020

鲲之鹏的技术人员将在本文介绍一种通过模拟操作微信App的方式采集指定公众号的所有历史数据的方法。

通过我们抓包分析发现,微信公众号的历史数据是通过HTTP协议加载的,对应的API接口如下图所示,其中有四个关键参数(__biz、appmsg_token、pass_ticket以及Cookie)。

基于Python采集爬取微信公众号历史数据

为了能够拿到这四个参数,我们需要模拟操作App,让其产生这些参数,然后我们再抓包获取。对于模拟App操作,前面我们曾介绍过通过Python模拟安卓App的方法(详见http://www.site-digger.com/html/articles/20180912/664.html)。对于HTTP集成抓包,前面我们曾介绍过Mitmproxy(详见http://www.site-digger.com/html/articles/20181109/682.html)。

我们需要模拟操作微信完成如下步骤:

1. 启动微信App

2. 点击"通讯录"

3. 点击"公众号"

4. 点击要采集的公众号

5. 点击右上角的用户图像图标

6. 点击"全部消息"

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

此时,我们可以从https://mp.weixin.qq.com/mp/profile_ext?action=home的应答数据中捕获__biz、appmsg_token以及pass_ticket三个关键参数,以及请求头中的Cookie值。如下图所示。

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

基于Python采集爬取微信公众号历史数据

有了上述四个参数,我们就可以构造出获取历史文章列表的API请求,通过调用API接口直接获取数据(不需要再模拟App操作)。核心参数如下所示,通过改变offset参数,可以拿到所有历史数据。

# Cookie 
headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} 
 
url = 'https://mp.weixin.qq.com/mp/profile_ext?' 
data = {} 
data['is_ok'] = '1' 
data['count'] = '10' 
data['wxtoken'] = '' 
data['f'] = 'json' 
data['scene'] = '124' 
data['uin'] = '777' 
data['key'] = '777' 
data['offset'] = '0' 
data['action'] = 'getmsg' 
data['x5'] = '0' 
# 下面三个参数需要替换 
# https://mp.weixin.qq.com/mp/profile_ext?action=home应答数据里会暴漏这三个参数 
data['__biz'] = 'MjM5MzQyOTM1OQ==' 
data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' 
data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' 
url = url + urllib.urlencode(data)

以"数字工厂"这个微信公众号为例,采集过程运行截图如下所示:

基于Python采集爬取微信公众号历史数据

输出结果截图如下所示:

基于Python采集爬取微信公众号历史数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python批量生成本地ip地址的方法
Mar 23 Python
python使用pil生成缩略图的方法
Mar 26 Python
Python函数式编程指南(三):迭代器详解
Jun 24 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
在Python中移动目录结构的方法
Jan 31 Python
Python 调用Java实例详解
Jun 02 Python
Python中return self的用法详解
Jul 27 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Django路由层URLconf作用及原理解析
Sep 24 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 #Python
Python基于execjs运行js过程解析
Nov 27 #Python
celery在python爬虫中定时操作实例讲解
Nov 27 #Python
python输出国际象棋棋盘的实例分享
Nov 26 #Python
Django多个app urls配置代码实例
Nov 26 #Python
python Xpath语法的使用
Nov 26 #Python
python模拟点击玩游戏的实例讲解
Nov 26 #Python
You might like
第八节 访问方式 [8]
2006/10/09 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
python动态加载包的方法小结
2016/04/18 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
自我介绍演讲稿
2014/01/15 职场文书
自动一体化专业求职信
2014/03/15 职场文书
工程负责人任命书
2014/06/06 职场文书
政府采购方案
2014/06/12 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Python Matplotlib库实现画局部图
2021/11/17 Python