淘宝/天猫获得商品详情 API 返回值说明

64 阅读6分钟

淘宝/天猫的商品详情API允许开发者通过编程方式获取特定商品的详细信息。然而,需要注意的是,淘宝/天猫的API通常对外部开发者有一定的限制,并且需要开发者在淘宝开放平台(或天猫开放平台)注册并获取API权限和密钥。

以下是对淘宝/天猫商品详情API返回值的详细说明,以及一个Python示例代码(请注意,由于API的具体细节可能会随时间而变化,以下信息是基于一般经验的概述)。

返回值说明

当调用淘宝/天猫商品详情API时,通常会返回一个结构化的JSON对象,其中包含了商品的详细信息。以下是一个典型的返回值结构及其字段含义:

json复制代码

{
"request_id": "请求的唯一标识符",
"tmall_trade_item": { // 如果是天猫商品,这个字段会包含天猫商品的详细信息
"item": {
"num_iid": "商品ID", // 商品的唯一标识符
"title": "商品标题", // 商品标题
"pic_url": "商品主图URL", // 商品主图链接
"small_images": [ // 商品的小图列表
"http://img.url1.com",
"http://img.url2.com"
// ...
],
"reserve_price": "一口价", // 商品的一口价(如果设置了的话)
"price": "当前价", // 商品的当前售价
"total_fee": "总价", // 包括运费在内的总价(如果API提供了这个字段)
"skus": [ // 商品的SKU列表
{
"price": "SKU价格",
"quantity": "SKU库存",
"outer_id": "SKU外部ID",
"properties": [ // SKU的属性列表
{
"property_name": "属性名",
"property_value": "属性值"
},
// ...
]
},
// ...
],
"props": [ // 商品的属性列表(可能不同于SKU属性)
{
"name": "属性名",
"value": "属性值"
},
// ...
],
"desc": "商品描述", // 商品描述信息(可能是HTML格式)
"detail_url": "商品详情页URL", // 商品详情页链接
"seller_id": "卖家ID", // 卖家唯一标识符
"seller_nick": "卖家昵称", // 卖家昵称
"location": "发货地", // 商品发货地
"post_fee": "邮费", // 商品的邮费
"type": "商品类型", // 商品类型(如:天猫、淘宝等)
"props_name": "商品属性名称列表", // 商品属性的名称列表(可能是字符串形式,具体取决于API返回格式)
"props_img": { // 商品属性图片(如果有的话)
"prop_pic_url": "属性图片URL"
},
"video_url": "商品视频URL", // 商品视频链接(如果有的话)
"service_list": [ // 商品提供的服务列表(如:七天无理由退换等)
{
"service_code": "服务代码",
"service_name": "服务名称"
},
// ...
],
// 可能还包含其他商品相关的字段,如库存预警、是否包邮、是否预售等
},
// 可能还包含其他天猫商品相关的字段,如店铺信息、优惠券信息等
},
// 如果是淘宝商品,则可能返回taobao_trade_item等类似结构的字段,具体取决于API版本和请求参数
"error_code": "0", // 错误代码(0通常表示成功)
"msg": "success", // 错误信息或操作结果描述
// 可能还包含其他字段,如调用次数限制、API版本信息等
}

Python示例代码

以下是一个使用Python调用淘宝/天猫商品详情API并解析返回值的示例代码(请注意,这里的代码是一个简化的示例,并且由于API的限制,您可能需要先获取API权限和密钥,并且可能需要使用淘宝开放平台提供的SDK或工具来生成签名等)。

python复制代码

import requests
import hashlib
import time
import json
# 设置API密钥和请求参数(注意:这里只是示例,实际使用时需要替换为您的API密钥和正确的请求参数)
APP_KEY = 'YOUR_APP_KEY'
APP_SECRET = 'YOUR_APP_SECRET'
ITEM_ID = 'YOUR_ITEM_ID' # 要查询的商品ID
# 生成签名(具体签名算法可能因API而异,这里只是示例)
def generate_sign(params):
params_str = '&'.join(['{}={}'.format(k, v) for k, v in sorted(params.items()) if k not in ['sign']])
sign_str = f'{APP_SECRET}&{params_str}'
m = hashlib.md5()
m.update(sign_str.encode('utf-8'))
return m.hexdigest().upper()
# 构建请求参数
params = {
'method': 'taobao.item.get', # API接口名称(具体名称可能因API版本而异)
'app_key': APP_KEY,
'timestamp': int(time.time()),
'v': '2.0', # API版本号
'fields': 'num_iid,title,pic_url,price,skus,props,desc,detail_url,seller_id,seller_nick,location,post_fee', # 需要返回的字段(用逗号分隔)
'item_id': ITEM_ID, # 商品ID
# 可能还需要其他参数,如会话信息、用户身份等,根据API文档添加
}
params['sign'] = generate_sign(params)
# 发送HTTP请求并获取响应
url = 'https://eco.taobao.com/router/rest' # 替换为实际的API请求地址(注意:这里是一个示例地址)
response = requests.get(url, params=params)
# 解析响应数据
if response.status_code == 200:
data = response.json()
if 'tmall_trade_item' in data:
item = data['tmall_trade_item']['item']
# 打印商品信息(根据实际需求选择打印的字段)
print(f'商品ID: {item["num_iid"]}')
print(f'商品标题: {item["title"]}')
print(f'商品主图URL: {item["pic_url"]}')
print(f'商品价格: {item["price"]}')
# ... 打印其他需要的字段
elif 'taobao_trade_item' in data:
# 如果是淘宝商品,则处理淘宝商品的字段(具体结构可能不同于天猫商品)
pass
else:
print('未找到商品信息')
else:
print('API请求失败:', response.status_code, response.text)

注意事项

  1. API权限:确保您已经在开放平台注册并获取了API权限和密钥。
  2. 请求参数:根据API文档,确保您传递了正确的请求参数,包括商品ID、需要返回的字段等。
  3. 签名算法:根据API文档,确保您使用了正确的签名算法和参数生成签名。注意参数排序和拼接方式,这通常是签名正确性的关键。
  4. API版本:注意API的版本号,不同版本的API可能具有不同的参数和返回值结构。
  5. 错误处理:在实际应用中,您应该添加适当的错误处理逻辑,以处理API请求失败或返回错误数据的情况。
  6. API地址:示例中的API地址可能不是实际的地址,请确保您使用的是API文档中提供的正确地址。
  7. 字段选择:在请求参数中,您可以通过fields字段指定需要返回的字段,以减少不必要的数据传输和解析时间。
  8. 频率限制:淘宝/天猫的API通常对调用频率有一定的限制,请确保您的请求符合API的频率限制要求。

请注意,由于淘宝/天猫的API可能会随着时间的推移而发生变化,因此建议您在开发过程中始终参考最新的API文档,并密切关注任何可能的更新或变更。