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中处理异常的教程
May 24 Python
python开发之for循环操作实例详解
Nov 12 Python
Python之re操作方法(详解)
Jun 14 Python
全面分析Python的优点和缺点
Feb 07 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
Python selenium文件上传方法汇总
2020/11/19 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python模块的加载讲解
2019/01/15 Python
Python List cmp()知识点总结
2019/02/18 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
python中使用np.delete()的实例方法
2021/02/01 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
红旗方阵解说词
2014/02/12 职场文书
导师推荐信范文
2014/05/09 职场文书
行政求职信
2014/07/04 职场文书
现场活动策划方案
2014/08/22 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
公司员工管理制度
2015/08/04 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL