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实现删除文件与目录的方法
Nov 10 Python
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
理解Python中的类与实例
Apr 27 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python实现XML文件解析的示例代码
Feb 05 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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获取汉字的拼音(全部与首字母)
2013/06/27 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
angular4强制刷新视图的方法
2018/10/09 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
python实现实时监控文件的方法
2016/08/26 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
python中update的基本使用方法详解
2019/07/17 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
基层党支部公开承诺书
2014/05/29 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
二年级学生期末评语
2014/12/26 职场文书