
1. 准备工具和环境
- 下载抓包工具:推荐Charles(Mac/Windows通用,功能强大)或Fiddler(Windows更友好)。
-
确保电脑和手机连接同一WiFi(同一局域网)。
-
手机安装微信,电脑可选择PC端微信或直接用手机。
2. 配置抓包工具(HTTPS抓包必备)
-
打开Charles/Fiddler,设置代理端口(默认8888)。
-
在手机WiFi设置中手动代理:IP填电脑IP,端口填8888。
- 安装证书(重要!否则抓不到HTTPS):
-
Charles:Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device → 手机浏览器访问chls.pro/ssl下载证书。
-
Fiddler:Tools → Options → HTTPS → Export Root Certificate to Desktop → 手机安装。
-
- 手机信任证书:
-
iOS:设置 → 通用 → 关于本机 → 证书信任设置 → 勾选证书。
-
Android:设置 → 安全 → 从存储设备安装证书 → 选择下载的证书。
-
-
验证:手机浏览器访问https://www.baidu.com,能正常显示即成功。
3. 抓取小程序的产品页接口
-
清空抓包记录(Charles按扫把图标,Fiddler按X)。
-
手机打开微信,进入目标小程序,进入产品页(商城首页或分类页)。
- 在抓包工具中找到请求:
-
通常是POST或GET请求,URL包含“/product”、“/goods”、“/category”、“/list”等关键词。
- 示例常见接口:
-
商品类目列表:https://xxx.com/api/category/list
-
商品列表:https://xxx.com/api/goods/list?category_id=xxx
-
-
-
记录下关键接口和参数(尤其是category_id、page、size等分页参数)。


4. 分析JSON数据,提取商品图片URL
-
选中一个商品列表接口,查看Response(JSON格式)。
- 找到商品数组,通常结构如下:
{ "data": [ { "id": 123, "name": "商品名称", "images": [ "https://img.xxx.com/abc.jpg", "https://img.xxx.com/def.jpg" ], "price": 99.9 } ] } -
图片URL通常在“images”、“pic_url”、“cover”、“detail_images”等字段。
-
如果是主图,通常取第一个;如果要全部图片,就取整个数组。

5. 批量获取所有类目下的所有商品
-
先通过类目接口获取所有category_id(通常一页返回几十个类目)。
- 对每个类目循环调用商品列表接口:
-
带上category_id参数。
-
处理分页:从page=1开始,一直请求直到返回空数据或total=0。
-
- 常见参数示例:
-
GET:?category_id=1&page=1&size=100
-
POST:body里带{"category_id":1,"page":1,"size":100}
-
6. 编写简单Python脚本批量提取图片URL
-
使用Python + requests库实现(几行代码即可):
import requests
import json
import pandas as pd
# 示例接口(替换成你抓到的真实接口)
base_url = "https://api.xxx.com/goods/list"
headers = {"User-Agent": "Mozilla/5.0", "Cookie": "你的cookie(如果需要)"}
all_goods = []
# 假设你已经拿到所有类目ID列表
category_ids = [1, 2, 3, ...] # 从类目接口获取
for cid in category_ids:
page = 1
while True:
params = {"category_id": cid, "page": page, "size": 100}
resp = requests.get(base_url, params=params, headers=headers)
data = resp.json()
if not data.get("data"): # 没有数据就退出
break
for item in data["data"]:
# 提取商品信息
images = item.get("images", []) # 全部图片
if images:
main_image = images[0] # 主图
all_images = ",".join(images) # 全部图片用逗号分隔
all_goods.append({
"类目ID": cid,
"商品ID": item.get("id"),
"商品名称": item.get("name"),
"主图URL": main_image,
"全部图片URL": all_images,
"价格": item.get("price")
})
page += 1
# 保存到Excel
df = pd.DataFrame(all_goods)
df.to_excel("小程序商品图片.xlsx", index=False)
print("抓取完成!共", len(all_goods), "个商品")
-
运行脚本后,生成Excel表格,包含商品名称、类目、图片URL等。

7. 下载图片(可选)
-
如果老板需要本地图片,可以再写一段代码:
import urllib.request
import os
os.makedirs("商品图片", exist_ok=True)
for idx, row in df.iterrows():
for img_url in row["全部图片URL"].split(","):
filename = f"商品图片/{row['商品名称']}_{idx}_{img_url.split('/')[-1]}"
urllib.request.urlretrieve(img_url, filename)
8. 交付老板
-
把生成的Excel文件和(可选)图片文件夹一起发给老板。
-
备注:已抓取所有类目下所有商品图片,共XX个商品。
注意事项:
-
抓包时多操作几页,确保接口完整。
-
部分小程序有签名/加密参数,抓到真实请求后直接复制cURL或用Python模拟即可(通常不需要破解签名)。
-
频率控制:每秒1-2个请求,避免被风控。
-
仅用于正当学习/商业分析,勿用于非法用途。
欢迎有更好的方法前辈学习交流指导



小程序商品图片批量抓取
1528

被折叠的 条评论
为什么被折叠?



