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的Django框架的运行方式及处理流程
Apr 08 Python
python基础教程之分支、循环简单用法
Jun 16 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
解析PyCharm Python运行权限问题
Jan 08 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
Python中相见恨晚的技巧
Apr 13 Python
教你怎么用Python实现多路径迷宫
Apr 29 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类
2006/07/15 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
php将html转为图片的实现方法
2017/05/19 PHP
jQuery ready函数滥用分析
2011/02/16 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
js数组的操作指南
2014/12/28 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
客户经理岗位职责
2013/12/08 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
好人好事事迹材料
2014/02/12 职场文书
法律专业自荐信
2014/06/03 职场文书
话题作文之诚信
2019/11/28 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang