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 自动安装 Rising 杀毒软件
Apr 24 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python实现调度算法代码详解
Dec 01 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
Python爬虫requests库多种用法实例
May 28 Python
python 制作本地应用搜索工具
Feb 27 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
source.php查看源文件
2006/12/09 PHP
PHP中的CMS的涵义
2007/03/11 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
python中去空格函数的用法
2014/08/21 Python
Python中表示字符串的三种方法
2017/09/06 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python 字典操作提取key,value的方法
2019/06/26 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
Ajax和javascript的区别
2013/07/20 面试题
青春励志演讲稿
2014/04/29 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript