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多线程threading.Lock锁用法实例
Nov 01 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
Python调用C语言的实现
Jul 26 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python代码如何注释
Jun 01 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
python PIL模块的基本使用
Sep 29 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 array_map()数组函数使用说明
2011/07/12 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
js+html制作简单验证码
2017/02/16 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
python三元运算符实现方法
2013/12/17 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
如何使用python操作vmware
2019/07/27 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
python math模块的基本使用教程
2021/01/16 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
宿舍卫生检讨书
2014/01/16 职场文书
小学班级口号
2014/06/09 职场文书
企业法人任命书
2015/09/21 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
python中使用redis用法详解
2022/12/24 Redis