一、接口定位与申请流程
1. 接口名称与文档
- 实际接口名称:
taobao.item.get
(商品详情接口) - 官方文档:需登录淘宝开放平台查看,路径为
文档中心 > 商品类目属性 > taobao.item.get
。
2. 申请流程
(1) 注册与认证
- 步骤1:注册淘宝开放平台账号,完成支付宝实名认证。
- 步骤2:提交企业资质(营业执照、法人身份证)或个人身份信息。
(2) 创建应用
- 步骤3:在开发者中心创建应用,填写应用名称、描述、回调域名等信息。
- 步骤4:申请API权限,选择“淘宝客-商品”相关权限(如
taobao.item.get
)。
(3) 审核与授权
- 步骤5:提交应用审核,通常1-3个工作日完成。
- 步骤6:审核通过后,获取
App Key
和App Secret
,并签订合作协议。
二、接口参数与调用方法
1. 接口基本信息
- 接口名称:
taobao.item.get
- 请求方式:GET/POST
- 返回格式:JSON/XML(推荐使用JSON)
2. 必填参数
参数名 | 类型 | 必填 | 说明 |
---|
app_key | String | 是 | 淘宝开放平台分配的App Key |
method | String | 是 | 接口名称,固定为taobao.item.get |
timestamp | String | 是 | 当前时间,格式YYYY-MM-DD HH:mm:ss |
v | String | 是 | API协议版本,固定为2.0 |
sign | String | 是 | 签名(生成方法见下文) |
num_iid | String | 是 | 商品ID(需替换为实际ID) |
fields | String | 是 | 返回字段,如num_iid,title,price,pic_url,desc,sales |
3. 签名生成方法
python
def _generate_sign(params, app_secret): |
sorted_params = sorted(params.items()) |
sign_str = app_secret |
for k, v in sorted_params: |
sign_str += f"{k}{v}" |
sign_str += app_secret |
return hashlib.md5(sign_str.encode()).hexdigest().upper() |
4. 示例代码(Python)
python
import requests |
import hashlib |
import time |
|
class TaobaoAPI: |
def __init__(self, app_key, app_secret): |
self.app_key = app_key |
self.app_secret = app_secret |
self.gateway = 'https://eco.taobao.com/router/rest' |
|
def _generate_sign(self, params): |
sorted_params = sorted(params.items()) |
sign_str = self.app_secret |
for k, v in sorted_params: |
sign_str += f"{k}{v}" |
sign_str += self.app_secret |
return hashlib.md5(sign_str.encode()).hexdigest().upper() |
|
def get_item(self, num_iid, fields='num_iid,title,price,pic_url,desc,sales'): |
params = { |
'method': 'taobao.item.get', |
'app_key': self.app_key, |
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'), |
'format': 'json', |
'v': '2.0', |
'sign_method': 'md5', |
'num_iid': num_iid, |
'fields': fields |
} |
params['sign'] = self._generate_sign(params) |
response = requests.get(self.gateway, params=params) |
return response.json() |
|
# 使用示例 |
if __name__ == '__main__': |
app_key = 'your_app_key' |
app_secret = 'your_app_secret' |
taobao = TaobaoAPI(app_key, app_secret) |
result = taobao.get_item('商品ID') # 替换为实际商品ID |
print(result) |
三、返回数据结构
1. 返回字段示例
json
{ |
"item": { |
"num_iid": "123456789", |
"title": "商品标题", |
"price": "199.00", |
"pic_url": "https://img.alicdn.com/imgextra/i1/xxx.jpg", |
"desc": "<p>商品描述</p>", |
"sales": "1000" |
} |
} |
2. 字段说明
字段名 | 类型 | 说明 |
---|
num_iid | String | 商品ID |
title | String | 商品标题 |
price | String | 商品价格 |
pic_url | String | 商品主图URL |
desc | String | 商品描述(HTML格式) |
sales | String | 商品销量 |
四、注意事项
- 合规使用:
- 遵守《淘宝开放平台服务协议》,禁止用于爬虫、数据倒卖等违规用途。
- 个人开发者仅限自用,企业开发者需明确应用场景。
- 技术限制:
- 接口调用频率限制:普通开发者QPS(每秒请求数)为50-100次,高频应用可申请提升。
access_token
有效期为30天,需建立自动刷新机制。
- 安全建议:
- 妥善保管
App Key
和App Secret
,避免泄露。 - 对返回的
desc
字段(HTML格式)进行清洗,避免XSS攻击。
- 常见问题:
- Q1:个人能申请吗?
A1:可以,个人开发者可申请“自用型应用”,无需企业资质。 - Q2:如何获取商品ID?
A2:通过淘宝商品链接提取,例如https://item.taobao.com/item.htm?id=123456789
中的123456789
。
五、替代方案
- 官方API:优先使用淘宝开放平台官方接口,如
taobao.item.get
。 - 第三方服务:如需更高频率或更复杂功能,可考虑第三方API服务。
通过以上步骤,您可快速实现通过官方接口一键获取电商平台商品原数据,避免爬虫的合规风险和技术复杂度。