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 深入理解yield
Sep 06 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
python向字符串中添加元素的实例方法
Jun 28 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Python如何使用OS模块调用cmd
Feb 27 Python
python中的测试框架
Nov 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入门速成(2)
2006/10/09 PHP
1.PHP简介
2006/10/09 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
python中实现k-means聚类算法详解
2017/11/11 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
使用python实现飞机大战游戏
2020/03/23 Python
python使用建议与技巧分享(一)
2020/08/17 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
python中操作文件的模块的方法总结
2021/02/04 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
选秀节目策划方案
2014/06/06 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书