微信小程序商城商品图片批量抓取教程

小程序商品图片批量抓取

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个请求,避免被风控。

  • 仅用于正当学习/商业分析,勿用于非法用途。

欢迎有更好的方法前辈学习交流指导

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值