一、接口概述
淘宝商品详情 API(taobao.item.get)是淘宝开放平台提供的核心接口之一,允许开发者通过商品 ID 获取商品的详细信息。这些信息包括但不限于商品基础信息(标题、价格、库存等)、详情描述、图片资源、SKU 属性、促销信息等。该接口广泛应用于电商数据分析、价格监控、竞品分析等场景。
核心功能
- 基础信息获取:商品 ID、标题、价格、库存等基础数据。
- 详情描述:HTML 格式的商品描述内容。
- 图片资源:主图、详情图及视频链接。
- SKU 属性:颜色、尺寸等规格参数。
- 促销信息:限时折扣、满减等活动数据。
二、接口调用步骤
1. 前期准备
- 注册开发者账号:访问淘宝开放平台,完成企业认证(个人账号权限受限)。
- 创建应用:类型选择“服务市场应用”或“自用型应用”,并申请“淘宝客-商品详情”或“电商数据服务”相关接口权限。
- 获取凭证:获取 App Key 和 App Secret(用于签名),以及 Session Key(若需用户授权数据)。
2. 接口调用
- 请求地址:https://eco.taobao.com/router/rest(沙箱环境:https://gw.api.tbsandbox.com/router/rest)。
- 请求方式:GET 或 POST。
- 返回格式:JSON。
3. 参数说明
参数名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
method | 是 | String | 固定值 taobao.item.get |
app_key | 是 | String | 应用 Key |
timestamp | 是 | String | 时间戳,格式 yyyy-MM-dd HH:mm:ss |
format | 否 | String | 返回格式,默认 json |
v | 是 | String | API 版本,如 2.0 |
sign_method | 是 | String | 签名方法,如 md5 |
sign | 是 | String | API 输入参数签名结果 |
num_iid | 是 | String | 商品 ID |
fields | 是 | String | 需返回的字段列表 |
4. 签名生成
签名生成是调用淘宝 API 的关键步骤,用于验证请求的合法性。以下是 Python 中生成签名的示例代码:
import hashlib
import time
import urllib.parse
def generate_sign(params, app_secret):
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = app_secret
for k, v in sorted_params:
query_string += f"{k}{v}"
query_string += app_secret
return hashlib.md5(query_string.encode("utf-8")).hexdigest().upper()
三、Python 请求示例
以下是使用 Python 调用淘宝商品详情 API 的完整示例代码:
import requests
import hashlib
import time
import urllib.parse
def get_taobao_item_detail(num_iid, app_key, app_secret):
method = "taobao.item.get"
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
format = "json"
v = "2.0"
sign_method = "md5"
params = {
"method": method,
"app_key": app_key,
"timestamp": timestamp,
"format": format,
"v": v,
"sign_method": sign_method,
"num_iid": num_iid,
"fields": "num_iid,title,price,pic_url,desc,item_img.url,props_name,sku.sku_id,sku.properties,sku.quantity,sku.price"
}
params["sign"] = generate_sign(params, app_secret)
url = "https://eco.taobao.com/router/rest"
response = requests.get(url, params=params)
return response.json()
def generate_sign(params, app_secret):
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = app_secret
for k, v in sorted_params:
query_string += f"{k}{v}"
query_string += app_secret
return hashlib.md5(query_string.encode("utf-8")).hexdigest().upper()
if __name__ == "__main__":
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
num_iid = "652874751412"
result = get_taobao_item_detail(num_iid, app_key, app_secret)
print(result)
代码说明
- 签名生成:按淘宝规则对参数排序后拼接 App Secret 进行 MD5 加密。
- 异常处理:捕获网络请求和 JSON 解析异常。
- 响应解析:根据返回的 JSON 数据提取所需信息。
四、注意事项
1. 调用频率限制
- 免费版 API 有调用频率限制(通常为 500 次/天)。
- 商业版可申请更高调用配额。
2. 数据缓存策略
- 对不常变的数据(如商品标题、图片)进行本地缓存。
- 对价格、库存等实时性要求高的数据设置较短缓存时间。
3. 安全注意事项
- 妥善保管 App Secret。
- 使用 HTTPS 协议传输。
- 对用户输入的 item_id 进行合法性校验。
- 通过本文的介绍和代码示例,开发者可以快速掌握淘宝商品详情 API 的调用方法,在实际项目中集成淘宝商品数据。根据业务需求,可以进一步扩展功能,如商品搜索、订单同步等。
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。