一、核心方案:调用淘宝开放平台API
1. 注册与认证
- 步骤1 :访问淘宝开放平台,注册开发者账号并完成实名认证。
- 步骤2 :创建应用,填写应用名称、描述,选择类型为"电商服务",提交后获取App Key 和App Secret。
2. API调用流程
(1) 选择接口
- 推荐接口 :
taobao.item.sku.get
(直接获取SKU信息)或taobao.item_get
(获取商品详情,含SKU)。 - 接口文档 :淘宝开放API文档
(2) 构造请求
-
请求URL :淘宝开放API测试平台
-
参数示例:
csharppython params = { "method": "taobao.item.sku.get", "app_key": "你的App Key", "timestamp": "2025-07-09 12:00:00", "format": "json", "v": "2.0", "sign_method": "md5", "num_iid": "商品ID", # 例如:652874751412 "fields": "sku.price,sku.properties,sku.quantity" # 指定返回字段 }
(3) 生成签名
-
签名算法:按淘宝规范对参数进行排序、拼接并MD5加密。
scsspython import hashlib def generate_sign(params, app_secret): params_sorted = sorted(params.items()) query_string = app_secret + ''.join([f"{k}{v}" for k, v in params_sorted]) + app_secret return hashlib.md5(query_string.encode()).hexdigest().upper()
(4) 发送请求
-
Python代码示例:
pythonpython import requests import json app_key = "你的App Key" app_secret = "你的App Secret" num_iid = "商品ID" # 替换为实际商品ID # 构造请求参数 params = { "method": "taobao.item.sku.get", "app_key": app_key, "timestamp": "2025-07-09 12:00:00", "format": "json", "v": "2.0", "sign_method": "md5", "num_iid": num_iid, "fields": "sku.price,sku.properties,sku.quantity" } # 生成签名 sign = generate_sign(params, app_secret) params["sign"] = sign # 发送请求 response = requests.get("https://eco.taobao.com/router/rest", params=params) result = response.json() # 解析SKU数据 if result.get("error_response"): print(f"Error: {result['error_response']['msg']}") else: skus = result.get("item_sku_get_response", {}).get("skus", {}).get("sku", []) for sku in skus: print(f"SKU属性: {sku['properties']}, 价格: {sku['price']}, 库存: {sku['quantity']}")
3. 数据存储
-
保存为CSV:
pythonpython import csv with open("skus.csv", "w", newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(["商品ID", "SKU属性", "价格", "库存"]) for sku in skus: writer.writerow([num_iid, sku['properties'], sku['price'], sku['quantity']])
二、第三方工具方案(备选)
1. 工具选择
- 鼎点数据:支持淘宝/天猫SKU价格监控,提供API接口。
- 奇点数据:实时价格预警,适合竞品分析。
2. 使用步骤
- 注册工具账号,绑定淘宝店铺。
- 配置监控任务:输入商品链接,选择SKU监控字段。
- 导出数据:通过工具后台下载CSV或调用API获取数据。
三、注意事项
-
合规性:
- 遵守淘宝开放平台调用规则,避免高频调用(建议QPS≤1)。
- 禁止聚合多店铺数据,仅限授权店铺使用。
-
错误处理:
- 签名错误:检查参数排序及MD5计算。
- 权限不足:在开放平台提交API权限申请。
-
性能优化:
- 批量处理 :通过
taobao.items.onsale.get
获取商品列表,再逐个调用SKU接口。 - 缓存机制:对已获取的SKU数据缓存,减少重复请求。
- 批量处理 :通过
四、实战案例:批量获取某店铺商品SKU
1. 场景
-
需求:获取某淘宝店铺所有在售商品的SKU信息。
-
步骤:
- 调用
taobao.items.onsale.get
获取商品列表。 - 遍历商品ID,调用
taobao.item.sku.get
获取每个商品的SKU。 - 合并数据并保存。
- 调用
2. 代码示例(简化版)
csharp
python
# 获取在售商品列表
def get_onsale_items(app_key, app_secret):
params = {
"method": "taobao.items.onsale.get",
"app_key": app_key,
"timestamp": "2025-07-09 12:00:00",
"format": "json",
"v": "2.0",
"sign_method": "md5",
"fields": "num_iid,title"
}
sign = generate_sign(params, app_secret)
params["sign"] = sign
response = requests.get("https://eco.taobao.com/router/rest", params=params)
return response.json().get("items_onsale_get_response", {}).get("items", {}).get("item", [])
# 批量获取SKU
app_key = "你的App Key"
app_secret = "你的App Secret"
items = get_onsale_items(app_key, app_secret)
all_skus = []
for item in items:
num_iid = item["num_iid"]
skus = get_sku_info(app_key, app_secret, num_iid) # 调用前文函数
all_skus.extend(skus)
# 保存数据
with open("all_skus.csv", "w", newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(["商品ID", "商品标题", "SKU属性", "价格", "库存"])
for sku in all_skus:
writer.writerow([sku["num_iid"], sku["title"], sku["properties"], sku["price"], sku["quantity"]])
五、总结
通过淘宝开放平台API可合法、高效地批量获取商品SKU信息,适用于数据分析、库存管理等场景。需严格遵守平台规范,合理控制请求频率,确保数据合规性。第三方工具可作为补充方案,但需注意数据授权与隐私保护。