Python爬取微信小程序通用方法代码实例详解


Posted in Python onSeptember 29, 2020

背景介绍

最近遇到一个需求,大致就是要获取某个小程序上的数据。心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据。在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑。本文关键词:Python,小程序,Charles抓包

目标小程序:

公众号“同城商圈网”左下角“找商家”->汽车维修->小车维修->所有的商家信息,如下图所示:

Python爬取微信小程序通用方法代码实例详解

环境

PC端:Windows 10

移动端:iPhone

软件:Charles

Charles抓包

虽说网上大佬的教程很好很详细,但我想加入几个坑点解释,请点此查看Charles配置教程

Charles清空当前获取到的连接,防止干扰(学会使用这个黄色扫把!很有用)

Python爬取微信小程序通用方法代码实例详解

打开微信小程序进入到指定界面,Charles中显示如下

Python爬取微信小程序通用方法代码实例详解

进入到某个具体商家后,最先请求的是这个

Python爬取微信小程序通用方法代码实例详解

于是我们猜测,这个可能就是小程序相关的http请求,点进去我们看一下

Python爬取微信小程序通用方法代码实例详解

此时手机的界面是这样的

Python爬取微信小程序通用方法代码实例详解

诶,好像就是这个!(其实我也是一个一个试了好久,多试试就会找到啦,当然如果你懂点英文,能看懂左侧的英文就更好了!merchant就是商家的意思~),

但是我们想要获取所有的商家信息怎么办呢?那就先点击Charles上的黄色小扫把~,再返回到商家列表看看

Python爬取微信小程序通用方法代码实例详解

手机界面如下:

Python爬取微信小程序通用方法代码实例详解

没错就是这个请求了!

分析请求

选中左边发送的请求,右边点击Overview选项卡,查看请求信息,我们不难发现这是个POST请求

Python爬取微信小程序通用方法代码实例详解

我们知道POST请求提交的是表单,那么表单数据在哪里呢?我们可以在右边界面,鼠标右击,点击Copy Request就能获取表单数据了!

Python爬取微信小程序通用方法代码实例详解

复制到这里看看:

{"pageIndex":1,"pageSize":50,"regionId":"8","categoryId":"148","orderRule":0}

看到这里,我们就能猜出个大概了,pageIndex是页码,pageSize是每页显示数量,regionId是地区编号,categoryId是货品编号,orderRule是排序规则,至此抓包结束,我们成功抓到了目标包!

本节抓包方法理论上适合所有小程序,其他的你们可以自行尝试哦~

编写python代码

这里我们就简单的写个demo

import requests

url = "http://api.tc688.net/api/services/app/merchant/LoadCategoryMerchants"
header = {
  'Origin':'http://zazhi.tc688.net',
  'Host':'api.tc688.net',
  'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.14(0x17000e2e) NetType/WIFI Language/zh_CN',
  'Referer':'http://zazhi.tc688.net/companylist?id=148',
}
data = {"pageIndex":1,"pageSize":50,"regionId":"8","categoryId":"148","orderRule":0}
r = requests.post(url=url,data=data,headers=header)
print(r.text)

运行结果:

Python爬取微信小程序通用方法代码实例详解

完整项目

有关数据处理以及更换地区的详细代码,请访问我的GitHub:GitHub

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

Python 相关文章推荐
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
python fabric实现远程部署
Jan 05 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Django 限制访问频率的思路详解
Dec 24 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
python如何建立全零数组
Jul 19 Python
python爬虫如何解决图片验证码
Feb 14 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 Python
详解如何修改python中字典的键和值
Sep 29 #Python
提高python代码运行效率的一些建议
Sep 29 #Python
Python爬取微信小程序Charles实现过程图解
Sep 29 #Python
Python Charles抓包配置实现流程图解
Sep 29 #Python
python和node.js生成当前时间戳的示例
Sep 29 #Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 #Python
Python 下载Bing壁纸的示例
Sep 29 #Python
You might like
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
Python中元组,列表,字典的区别
2017/05/21 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
体育口号大全
2014/06/18 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
centos8安装MongoDB的详细过程
2021/10/24 MongoDB