背景介绍

最近遇到一个需求,大致就是要获取某个小程序上的数据。心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据。在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑。本文关键词:Python小程序Charles抓包

目标小程序:

公众号“同城商圈网”左下角“找商家”->汽车维修->小车维修->所有的商家信息,如下图所示:

环境

PC端:Windows 10

移动端:iPhone

软件:Charles

Charles抓包

虽说网上大佬的教程很好很详细,但我想加入几个坑点解释,因此又重新写了个博客,请点此查看Charles配置教程

  1. Charles清空当前获取到的连接,防止干扰(学会使用这个黄色扫把!很有用)

    1. 打开微信小程序进入到指定界面,Charles中显示如下

    2. 进入到某个具体商家后,最先请求的是这个

      于是我们猜测,这个可能就是小程序相关的http请求,点进去我们看一下

      此时手机的界面是这样的

诶,好像就是这个!(其实我也是一个一个试了好久,多试试就会找到啦,当然如果你懂点英文,能看懂左侧的英文就更好了!merchant就是商家的意思~),

但是我们想要获取所有的商家信息怎么办呢?那就先点击Charles上的黄色小扫把~,再返回到商家列表看看

手机界面如下:

没错就是这个请求了!

  1. 分析请求

    选中左边发送的请求,右边点击Overview选项卡,查看请求信息,我们不难发现这是个POST请求

我们知道POST请求提交的是表单,那么表单数据在哪里呢?我们可以在右边界面,鼠标右击,点击Copy Request就能获取表单数据了!

复制到这里看看:

{"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)

运行结果:

完整项目

有关数据处理以及更换地区的详细代码,请访问我的GitHub:GitHub

Python爬取微信小程序实战(通用)的更多相关文章

  1. python爬取微信小程序(实战篇)

    python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...

  2. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  3. scrapy爬取微信小程序社区教程(crawlspider)

    爬取的目标网站是: http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1 目的是爬取每一个教程的标题,作者,时间和 ...

  4. scarpy crawl 爬取微信小程序文章(将数据通过异步的方式保存的数据库中)

    import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider ...

  5. scarpy crawl 爬取微信小程序文章

    import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider ...

  6. [转]微信小程序之加载更多(分页加载)实例 —— 微信小程序实战系列(2)

    本文转自;http://blog.csdn.net/michael_ouyang/article/details/56846185 loadmore 加载更多(分页加载) 当用户打开一个页面时,假设后 ...

  7. Python flask构建微信小程序订餐系统

    第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆ht ...

  8. Python flask构建微信小程序订餐系统✍✍✍

    Python flask构建微信小程序订餐系统  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题, ...

  9. [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)

    本文转自:http://blog.csdn.net/michael_ouyang/article/details/70755892 续上一篇的文章:微信小程序之商品属性分类  —— 微信小程序实战商城 ...

  10. [转]微信小程序之购物数量加减 —— 微信小程序实战商城系列(3)

    本文转自:http://blog.csdn.net/michael_ouyang/article/details/70194144 我们在购买宝贝的时候,购物的数量,经常是我们需要使用的,如下所示: ...

随机推荐

  1. 文件的上传&预览&下载学习(一)

    注:主要是说明后端逻辑和数据库表设计 1.当前主流的几种文件上传&预览&下载方式 把文件直接存储在服务器 分布式存储OSS,比如阿里OSS.Minio 2.数据库表设计 由于文件都是跟 ...

  2. 机器学习基础02DAY

    数据的特征预处理 单个特征 (1)归一化 归一化首先在特征(维度)非常多的时候,可以防止某一维或某几维对数据影响过大,也是为了把不同来源的数据统一到一个参考区间下,这样比较起来才有意义,其次可以程序可 ...

  3. FutureTask 类

    更多内容,前往IT-BLOG 一.什么是 Future和 FutureTask FutureTask 的 Future就源自于它的异步工作机制,如果我们在主线程中直接写一个函数来执行任务,这是同步的任 ...

  4. Gin中间件middleware

    类型 全局中间件 单个路由中间件 群组中间件 Reference

  5. Windows系统下载最新版Windows10 iso映像

    在电脑PC端如何下载最新版的完整Windows10 iso映像?打开https://www.microsoft.com/zh-cn/software-download/windows10/页面,是不能 ...

  6. 解决class path resource [applicationContext.xml] cannot be opened because it does not exist

    在学习spring的过程出现class path resource [applicationContext.xml] cannot be opened because it does not exis ...

  7. vue中使用vue.extend在dom挂载vue实例

    const CounterComponent = Vue.extend(Counter); this.vm = new CounterComponent({}).$mount('#container' ...

  8. Kafka存储内幕详解

    1.概述 随着微服务和分布式计算的出现,Kafka已经成为各种主流平台系统架构中不可缺少的组成部分了.在本篇文章中,笔者将尝试为大家来解密Kafka的内部存储机制是如何运作的. 2.内容 在分布式系统 ...

  9. [GIT] 如何处理GIT分支合并(GIT MERGE)

    1 概述 2 分支合并 如果你有两个分支main和dev,main存放稳定版本,dev是开发版本,一个阶段后,你需要把dev代码更新到main分支中. dev --(merge update cont ...

  10. python中的类继承

    """ """ class Animal(object): def __init__(self,name,food): self.name ...