python高效采集淘宝商品数据,详情页实时 API 接口接入
要高效采集淘宝商品数据,需通过淘宝开放平台API接口实现。以下是完整操作指南:
一、前置准备
- 注册开发者账号
- 关注博主
- 提交应用信息(名称、描述、回调地址等),审核通过后获取
App Key
和App Secret
(密钥需严格保密)。
- 申请API权限
- 在“应用管理”中申请商品详情接口权限(如
taobao.item.get
),需说明使用场景(如商品分析、价格监控)。
- 在“应用管理”中申请商品详情接口权限(如
二、Python调用API核心步骤
1. 生成请求签名(MD5加密)
import hashlib |
import time |
def generate_sign(params, app_secret): |
sorted_params = sorted(params.items(), key=lambda x: x[0]) # 参数按键排序 |
sign_str = app_secret + ''.join(f"{k}{v}" for k, v in sorted_params) + app_secret |
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() |
2. 构建请求参数
app_key = "YOUR_APP_KEY" |
app_secret = "YOUR_APP_SECRET" |
item_id = "652874751412" # 商品ID |
params = { |
"method": "taobao.item.get", |
"app_key": app_key, |
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
"format": "json", |
"v": "2.0", |
"sign_method": "md5", |
"fields": "num_iid,title,price,pic_url,desc,sku", # 指定返回字段 |
"num_iid": item_id |
} |
params["sign"] = generate_sign(params, app_secret) # 添加签名 |
3. 发送请求并解析响应
import requests |
url = "https://eco.taobao.com/router/rest" |
response = requests.get(url, params=params) |
data = response.json() |
if "item_get_response" in data: |
item = data["item_get_response"]["item"] |
print(f"商品标题: {item['title']}") |
print(f"价格: {item['price']}") |
print(f"主图: {item['pic_url'][0]}") |
print(f"SKU信息: {item.get('sku', [])}") |
else: |
print(f"错误: {data.get('error_response', {}).get('msg', '未知错误')}") |
三、高效采集技巧
批量处理
- 使用
taobao.items.list
接口批量获取商品ID列表,循环调用taobao.item.get
获取详情。 - 示例:通过
num_iids
参数传入多个商品ID(最多40个),减少请求次数。
- 使用
频率控制
- 遵守淘宝API频率限制(如每分钟≤100次),使用
time.sleep()
或异步请求避免封禁。 - 示例:添加请求间隔
import time
requests.get(url, params=params)
time.sleep(0.6) # 确保每秒≤1.67次请求
- 遵守淘宝API频率限制(如每分钟≤100次),使用
数据存储与分析
- 使用
pandas
库处理数据,存储至MySQL/MongoDB或导出CSV。 - 示例:保存至CSV
import pandas as pd
df = pd.DataFrame([item])
df.to_csv("taobao_items.csv", index=False)
- 使用
通过以上步骤,可实现淘宝商品数据的高效采集与分析。实际开发中,需根据业务需求调整接口参数和数据处理逻辑。