做电商商品系统开发时,最头疼的莫过于 SKU 信息拆解得又杂又乱 —— 图片对应不上规格、价格和属性对不上 SKU,折腾半天还容易出错。其实淘宝开放平台的item_get_pro接口早就帮我们解决了这个问题,不用复杂处理就能拉全 SKU 核心数据,今天把实战细节拆给大家。
想获取每个 SKU 的专属图片,直接读prop_imgs
下的prop_img
数组就行。每个元素都包含properties
(属性编码,比如 “1627207:1347647754”)和url
(图片链接),前端展示时按属性编码关联,就不会出现 “图不对版” 的问题。示例字段片段:
json
"prop_imgs": {
"prop_img": [
{"properties": "1627207:1347647754", "url": "//img.alicdn.com/imgextra/i3/2596264565/TB2.XeblVXXXXXkXpXXXXXXXXXX_!!2596264565.jpg"},
{"properties": "1627207:1347647753", "url": "//img.alicdn.com/imgextra/i4/2596264565/TB2dTrjdVXXXXXBXpXXXXXXXXXX_!!2596264565.jpg"}
]
}
SKU 的规格文字(比如 “长方形带开瓶器 + 送工具刀卡 + 链子”)藏在两个地方:
•全局规格看props_name
:一次性获取所有 SKU 的属性描述,用分号分隔;
•单个 SKU 看skus/sku/properties_name
:每个 SKU 单独的文字说明,适合精准展示。
不同 SKU 的价格差异,直接从skus/sku
数组里读:https://o0b.cn/lin
•price
:当前售价(比如 “25.8”“39”);
•orginal_price
:原价;
•quantity
:对应 SKU 的库存数量,还能提前判断是否缺货。
•基础属性:props
数组包含品牌、产地、货号等关键信息,比如 “品牌:三刃木”“货号:GJ019C”,直接按 “name-value” 键值对提取;
•属性映射:props_list
字段帮你把属性编码转成文字(比如 “1627207:1347647754”→“颜色分类:长方形带开瓶器 + 送工具刀卡 + 链子”),避免解析混乱。
1.加缓存减压力:对高频访问的商品(比如首页推荐款),把 SKU 数据存到本地缓存(比如 Redis),设置 1 小时过期,能大幅减少接口调用次数,避免配额不够用;
2.错误重试防限流:遇到 “网络超时” 或 “QPS 超限”,别直接抛错 —— 加个重试机制(比如间隔 3 秒重试 2 次),重试前先检查请求参数是否正确(比如num_iid
有没有传错);
3.数据校验保完整:接口返回后,先检查error_code
是否为 “0000”,再确认skus/sku
和prop_imgs
是否有数据,避免空值导致前端展示异常。
python
# coding:utf-8
import requests
def get_taobao_sku_info(app_key, app_secret, num_iid):
"""
调用item_get_pro接口获取SKU信息
:param app_key: 淘宝开放平台申请的Key
:param app_secret: 对应Secret
:param num_iid: 商品ID(从商品详情页URL获取)
"""
# 官方接口请求地址(需替换为开放平台正式域名)
url = f"https://api.taobao.com/router/rest?key={app_key}&secret={app_secret}&num_iid={num_iid}&api_name=item_get_pro"
headers = {"Accept-Encoding": "gzip", "Connection": "close"}
try:
response = requests.get(url, headers=headers, timeout=(5, 15))
result = response.json()
if result.get("error_code") == "0000":
# 提取SKU核心数据
sku_list = result["item"]["skus"]["sku"]
prop_imgs = result["item"]["prop_imgs"]["prop_img"]
print(f"获取到{len(sku_list)}个SKU,{len(prop_imgs)}张SKU图片")
return {"sku_list": sku_list, "prop_imgs": prop_imgs}
else:
print(f"接口调用失败:{result.get('reason', '未知错误')}")
return None
except Exception as e:
print(f"请求异常:{str(e)}")
return None
# 调用示例(需替换为自己的Key/Secret和商品ID)
if __name__ == "__main__":
get_taobao_sku_info("YOUR_APP_KEY", "YOUR_APP_SECRET", "520813250866")
如果在接口调试时遇到 “SKU 图片关联不上”“价格字段解析异常”,或者想了解批量获取 SKU 的技巧,评论区随时说具体问题~小编看到必回,一起避坑少走弯路!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。