基于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字符串特性及常用字符串方法的简单笔记
Jan 04 Python
详谈python http长连接客户端
Jun 12 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python装饰器简单用法实例小结
Dec 03 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Python urllib库如何添加headers过程解析
Oct 05 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php设计模式之委托模式
2016/02/13 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
Python中的self用法详解
2019/08/06 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
大专自我鉴定范文
2013/10/23 职场文书
求职信写作要突出重点
2014/01/01 职场文书
个人收入证明范本
2014/01/12 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
工作总结与自我评价
2014/09/18 职场文书
青年文明号申报材料
2014/12/23 职场文书
副总经理岗位职责
2015/02/02 职场文书
市场部岗位职责
2015/02/12 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL