基于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 流程控制实例代码
Sep 25 Python
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python转换HTML到Text纯文本的方法
Jan 15 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
python中常见错误及解决方法
Jun 21 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
总结python 三种常见的内存泄漏场景
Nov 20 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
vue 实现全选全不选的示例代码
2018/03/29 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
学python最电脑配置有要求么
2020/07/05 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
写给女朋友的道歉信
2014/01/12 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
匿名信格式范文
2015/05/27 职场文书
安全教育片观后感
2015/06/17 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python