基于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的Template使用指南
Sep 11 Python
进一步探究Python的装饰器的运用
May 05 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 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
php生成缩略图的类代码
2008/10/02 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
Javascript 继承机制实例
2009/08/12 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
vue实现分页组件
2020/06/16 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python解析xml文件实例分享
2013/12/04 Python
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python删除过期文件的方法
2015/05/29 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Python爬取网页信息的示例
2020/09/24 Python
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
大学生社会实践方案
2014/05/11 职场文书
白莲教口号
2014/06/18 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书