要高效获取淘宝商品的主图、视频、SKU图片、SKU文字、SKU价格、产品规格及属性,推荐使用淘宝开放平台的 taobao.item_get_pro
接口(或类似高级API)。以下是完整解决方案:
一、推荐接口:taobao.item_get_pro
这是淘宝官方的高级API,支持返回商品全量数据。
请求示例:
import requests
import hashlib
import time
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
session = "USER_SESSION_KEY" # 用户授权后的session
# 构造公共参数
params = {
"method": "taobao.item.get.pro", # 或 taobao.item.get
"app_key": app_key,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"format": "json",
"v": "2.0",
"sign_method": "md5",
"session": session,
"num_iid": "商品ID", # 如:677154234599
"fields": "item_img,videos,skus,props_name,property_alias,price"
}
# 生成签名
param_str = app_secret + ''.join(f"{k}{params[k]}" for k in sorted(params.keys())) + app_secret
sign = hashlib.md5(param_str.encode()).hexdigest().upper()
params["sign"] = sign
# 发送请求
response = requests.get("https://eco.taobao.com/router/rest", params=params)
data = response.json()
二、关键字段解析(fields
参数)
在请求中指定以下字段,可获取所需数据:
fields = """
item_img, # 主图列表
videos, # 商品视频
skus, # SKU信息(含图片、价格、规格)
props_name, # 商品属性
property_alias, # SKU文字描述
price # 商品价格
"""
三、返回数据示例
{
"item": {
"item_imgs": [
{"url": "https://img.alicdn.com/imgextra/i1/O1CN01j...jpg"},
{"url": "https://img.alicdn.com/imgextra/i2/O1CN01..."}
],
"videos": [
{"url": "https://cloud.video.taobao.com/play/u/...mp4"}
],
"skus": {
"sku": [
{
"sku_id": "123456789",
"price": "199.00",
"properties": "1627207:28332", // 属性ID
"properties_name": "颜色分类:黑色;尺码:S",
"sku_image": {
"url": "https://img.alicdn.com/imgextra/..."
}
}
]
},
"props_name": "品牌:XX;材质:棉", // 商品属性
"property_alias": "颜色分类:黑色=1627207:28332;尺码:S=20509:28315" // SKU文字映射
}
}
四、数据处理技巧
-
SKU图片匹配
通过skus.sku.sku_image.url
直接获取每个SKU对应的图片。 -
SKU文字描述
解析property_alias
+props_name
:# 示例:将属性ID映射为文字 prop_map = {} for pair in data['item']['property_alias'].split(';'): k, v = pair.split(':') prop_map[v] = k # 如 "1627207:28332" -> "颜色分类:黑色"
五、备选方案(无需API权限)
若无法开通高级API,可尝试:
-
淘宝商品详情页爬取
使用requests
+BeautifulSoup
解析页面,但需处理动态加载(如SKU数据在JS中):import re url = "https://item.taobao.com/item.htm?id=商品ID" html = requests.get(url).text # 提取SKU数据(示例正则) sku_data = re.search(r'var skuData = ({.*?});', html).group(1)
注意:需遵守淘宝Robots协议,大规模抓取有封禁风险。
-
第三方工具
如使用 Taobao API 等中转服务(注意数据安全)。
通过以上方法,可稳定获取淘宝商品的完整数据。建议优先使用官方API保障合规性,若数据量较小可结合页面解析作为补充。