一、摘要
微店(微店商城版 / 微小店)提供了官方开放平台 API(需开发者认证)和非官方逆向接口(基于网页 / 移动端请求解析)两种获取店铺商品列表的方式。本指南优先介绍合规的官方 API 调用流程,同时补充非官方接口的 Python 实现示例(仅用于技术学习);官方 API 需完成开发者资质申请、接口授权等前置步骤,具备稳定性和合规性,是商业场景的首选;非官方接口无资质要求,但存在风控和接口失效风险,仅限技术研究使用。
二、接口概述
1. 官方 API(推荐,合规可控)
核心信息(基于微店开放平台 V2 版)
| 项目 | 详细说明 |
|---|---|
| 接口名称 | 店铺商品列表查询(goods/list) |
| 请求方式 | POST(JSON 格式传参) |
| 官方文档 | 微店开放平台 |
| 核心 URL | api/v2/goods/list |
| 权限要求 | 1. 注册微店开放平台开发者账号;2. 创建应用并获取appkey/appsecret;3. 获取店铺授权的access_token |
| 返回格式 | JSON(结构化数据,含商品 ID、标题、价格、库存等完整字段) |
核心请求参数(官方 API)
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| access_token | 是 | 字符串 | c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V) |
| page_num | 是 | 整数 | 页码,默认 1 |
| page_size | 是 | 整数 | 每页条数,最大 50 |
| shop_id | 是 | 字符串 | 店铺 ID(授权后可通过接口获取) |
| status | 否 | 整数 | 商品状态:0 - 全部、1 - 上架、2 - 下架、3 - 违规 |
2. 非官方逆向接口(仅技术学习)
核心信息(基于微店网页端 / 商家版)
| 项目 | 详细说明 |
|---|---|
| 请求方式 | GET/POST(不同店铺类型略有差异) |
| 核心 URL | c0b.cc/R4rbK2(注册获取测试账号,Taobaoapi2014添加V) |
| 返回格式 | HTML(商家后台)/JSON(移动端接口,需抓包验证) |
| 权限要求 | 无需开发者资质,但需登录店铺账号(携带 Cookie/Token) |
| 风控说明 | 高频请求易触发 IP 封禁,仅适合低频率测试 |
核心请求参数(非官方)
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| shopId | 是 | 字符串 | 微店店铺 ID(可从店铺主页 URL 提取,如https://weidian.com/s/123456中123456) |
| page | 否 | 整数 | 页码,默认 1 |
| pageSize | 否 | 整数 | 每页条数,默认 20 |
三、Python 请求示例
前置准备
bash
# 安装核心依赖
pip install requests pycryptodome
示例 1:官方 API 调用(需先完成开发者认证)
注:官方 API 需先完成「开发者注册→创建应用→店铺授权→获取 access_token」流程,以下为核心调用代码(签名逻辑需参考官方文档调整)。
python
import requests
import json
import time
import hashlib
def weidian_official_goods(access_token, shop_id, page_num=1, page_size=20):
"""
微店官方API获取店铺商品列表
:param access_token: 店铺授权令牌
:param shop_id: 店铺ID
:param page_num: 页码
:param page_size: 每页条数
:return: 商品列表(JSON)
"""
# 1. 配置接口信息
url = "https://api.weidian.com/api/v2/goods/list"
# 公共参数(部分接口需签名,参考官方文档)
params = {
"access_token": access_token,
"shop_id": shop_id,
"page_num": page_num,
"page_size": page_size,
"status": 0, # 0=全部商品
"timestamp": int(time.time()), # 时间戳
"format": "json",
"v": "2.0"
}
# 2. 签名生成(示例,需按官方规则调整,如appsecret参与签名)
# appsecret = "你的应用密钥" # 从开放平台应用详情获取
# sign_str = "".join([f"{k}{v}" for k, v in sorted(params.items())]) + appsecret
# params["sign"] = hashlib.md5(sign_str.encode()).hexdigest()
try:
# 3. 发送请求
response = requests.post(
url=url,
data=json.dumps(params),
headers={"Content-Type": "application/json"},
timeout=10
)
response.raise_for_status()
result = response.json()
# 4. 解析结果
if result.get("errcode") == 0:
goods_list = result.get("data", {}).get("list", [])
print(f"成功获取第{page_num}页商品,共{len(goods_list)}条")
return goods_list
else:
print(f"接口调用失败:{result.get('errmsg')}")
return []
except Exception as e:
print(f"请求异常:{str(e)}")
return []
# 测试调用(需替换为真实的access_token和shop_id)
if __name__ == "__main__":
ACCESS_TOKEN = "你的店铺授权令牌"
SHOP_ID = "你的店铺ID"
goods = weidian_official_goods(ACCESS_TOKEN, SHOP_ID, page_num=1)
print("商品示例:", json.dumps(goods[:1], ensure_ascii=False, indent=2))
示例 2:非官方接口调用(仅技术学习)
注:非官方接口依赖微店页面结构,需自行抓包更新 URL / 参数,且需登录后复制 Cookie。
python
# coding:utf-8
"""
Compatible for python2.x and python3.x
requirement: pip install requests
"""
from __future__ import print_function
import requests
# 配置参数 API_URL = "c0b.cc/R4rbK2 wechatid:Taobaoapi2014 "
# 请求示例 url 默认请求参数已经做URL编码
url = "micro/item_search_shop/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&userid=商品ID&page=&sort=&"
headers = {
"Accept-Encoding": "gzip",
"Connection": "close"
}
if __name__ == "__main__":
r = requests.get(url, headers=headers)
json_obj = r.json()
print(json_obj)
代码关键说明
-
官方 API:
access_token需通过微店开放平台的 OAuth2.0 授权流程获取,是调用接口的核心凭证;- 签名逻辑是官方 API 的必选步骤(不同接口签名规则略有差异),需严格参考官方文档;
- 支持批量获取商品的完整信息(如库存、规格、上下架状态),适合商业场景。
-
非官方接口:
Cookie获取方式:登录微店→浏览器 F12→Network→任意请求→Request Headers→复制 Cookie;- 商品卡片类名(如
.goods-item)需通过浏览器 F12→Elements 自行验证,微店页面结构可能更新; - 仅能提取商品标题、价格等基础信息,无法获取库存、规格等核心数据,且易触发风控。
四、结语
- 微店店铺商品获取优先选择官方开放平台 API,其具备合规性、稳定性和数据完整性,是商业场景的唯一合法路径;非官方逆向接口仅用于技术研究,商用需承担账号 / IP 封禁、法律合规风险。
- 官方 API 使用前需完成开发者注册、应用创建、店铺授权等流程,建议仔细阅读微店开放平台的《API 文档》《开发者协议》,确保接口调用符合平台规则。
- 非官方接口依赖微店前端页面结构,URL、参数、DOM 类名均可能随平台迭代失效,需定期通过抓包工具(Chrome DevTools/Fiddler)验证并调整代码。
- 实际应用中,无论官方 / 非官方接口,均需添加异常处理(如重试机制、超时控制)、控制请求频率,避免触发平台风控规则。
总结
- 微店店铺商品 API 分官方(合规)和非官方(仅学习)两类,商业场景必须使用官方开放平台接口;
- 官方 API 需先完成开发者认证和授权,核心是获取
access_token并按规则签名;非官方接口依赖 Cookie 和 HTML 解析,仅能获取基础商品信息; - 接口调用需控制频率、做好异常处理,非官方接口需定期验证页面结构,避免失效。