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 解析XML文件
Apr 15 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
python如何在终端里面显示一张图片
Aug 17 Python
Java及python正则表达式详解
Dec 27 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
Python : turtle色彩控制实例详解
Jan 19 Python
python数据爬下来保存的位置
Feb 17 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
Python基础之pandas数据合并
Apr 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
python数组过滤实现方法
2015/07/27 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
对Python 语音识别框架详解
2018/12/24 Python
Python对象转换为json的方法步骤
2019/04/25 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
网络安全方面的面试题
2015/11/04 面试题
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
小区文明倡议书
2014/05/16 职场文书
教研处工作方案
2014/05/26 职场文书
英语专业自荐书
2014/06/13 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
小学生安全保证书
2015/05/09 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
高中化学教学反思
2016/02/22 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript