若需通过淘宝API获取商品详情数据(如标题、详情图、价格、SKU等),推荐使用淘宝开放平台官方API,这是唯一合规且稳定的方式。以下是具体实现方案及关键注意事项:
一、官方API接入流程
注册开发者账号
完成实名认证并创建应用。
获取应用的
App Key和App Secret(用于身份验证)。申请API权限
taobao.item.get:获取商品基础信息(标题、价格、库存、主图等)。taobao.item.detail.get:获取商品详情页完整信息(含HTML描述)。taobao.item.sku.get:获取商品SKU列表(规格、价格、库存等)。在控制台申请以下核心接口权限:
部分高级接口需企业资质审核。
生成API签名
淘宝API要求对请求参数进行MD5签名,确保请求合法性。签名步骤如下:
示例代码(Python):
pythonimport hashlib import time def generate_sign(params, app_secret): sorted_params = sorted(params.items(), key=lambda x: x[0]) string_to_sign = app_secret for k, v in sorted_params: if k != 'sign': string_to_sign += f"{k}{v}" string_to_sign += app_secret return hashlib.md5(string_to_sign.encode('utf-8')).hexdigest().upper() # 示例参数 params = { 'method': 'taobao.item.get', 'app_key': 'your_app_key', 'timestamp': time.strftime("%Y-%m-%d %H:%M:%S"), 'v': '2.0', 'num_iid': '123456789', # 商品ID 'fields': 'num_iid,title,price,pic_url,skus' # 返回字段 } params['sign'] = generate_sign(params, 'your_app_secret') 按字典序排序所有参数(除
sign外)。拼接参数名与值,并在首尾添加
App Secret。计算拼接字符串的MD5值,转为大写作为签名。
发送API请求
使用HTTP库(如
requests)发送GET/POST请求,示例:pythonimport requests url = "https://gw.api.taobao.com/router/rest" response = requests.get(url, params=params) data = response.json() if 'error_response' in data: print(f"API调用失败: {data['error_response']['msg']}") else: print(f"商品标题: {data['item']['title']}") print(f"价格: {data['item']['price']}") print(f"SKU列表: {data['item']['skus']}")
二、关键API参数说明
| 接口名称 | 核心参数 | 返回字段示例 |
|---|---|---|
taobao.item.get | num_iid(商品ID)、fields(需返回的字段,如title,price,pic_url,skus) | title(标题)、price(价格)、pic_url(主图)、skus(SKU列表) |
taobao.item.detail.get | num_iid、locale(语言,如zh_CN)、platform(平台,如pc或无线) | apiStack(详情页HTML)、item(商品基础信息) |
taobao.item.sku.get | num_iid、sku_props(可选,筛选特定SKU) | skus(SKU列表,含properties_name、price、quantity等) |
三、非官方方式风险提示
网页爬虫
问题:淘宝页面结构频繁更新,且数据通过JavaScript动态加载,爬取难度高;易触发反爬机制(如验证码、IP封禁)。
合规性:违反淘宝《用户协议》,可能面临法律追责。
第三方API
问题:数据来源不明,稳定性差;部分服务商可能违规采集数据,存在法律风险。
建议:仅在明确数据合法性的前提下使用,并签订服务协议。
四、推荐方案
商业项目:优先申请淘宝开放平台API权限,确保数据合规性和稳定性。
个人学习:若仅需少量数据,可通过淘宝联盟(TBK)API获取推广商品信息,但功能受限。
批量采集:使用淘宝开放平台的
taobao.items.list.get或taobao.item.search接口批量获取商品ID,再逐个调用详情接口。