一、应用场景
竞品监控:实时追踪竞争对手商品上下架动态
库存预警:自动检测自有商品缺货下架状态
价格波动分析:结合上下架记录研究价格策略
二、API基本原理
淘宝开放平台的taobao.item.get接口提供商品状态查询能力,核心响应参数:
{
"item": {
"num_iid": "638732718292",
"title": "旗舰手机",
"status": "onsale", // 关键状态字段
"price": "3999.00"
}
}
其中status字段取值说明:
onsale:在售状态
instock:仓库中(未上架)
delete:已删除
三、Python监测实现
import requests
import hashlib
import time
def check_item_status(item_id):
# 构造基础参数
params = {
"method": "taobao.item.get",
"app_key": "YOUR_APP_KEY",
"timestamp": str(int(time.time())),
"item_id": item_id,
"fields": "num_iid,title,status"
}
# 生成签名(省略密钥处理细节)
param_str = ''.join(f"{k}{v}" for k,v in sorted(params.items()))
params["sign"] = hashlib.md5((param_str + "APP_SECRET").encode()).hexdigest()
# 发送API请求
response = requests.get("https://api.taobao.com/router/rest", params=params)
data = response.json()
# 解析状态
if "item_get_response" in data:
status_map = {
"onsale": "在售",
"instock": "未上架",
"delete": "已删除"
}
return status_map.get(data["item"]["status"], "未知状态")
return "查询失败"
示例调用
print(check_item_status("638732718292")) # 输出:在售
四、优化实践
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=30)
def monitoring_job():
for item_id in ITEM_LIST:
status = check_item_status(item_id)
if status != last_status[item_id]:
send_alert(item_id, status)
sched.start()
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
def status_changed(item_id, current_status):
last_status = r.get(f"item:{item_id}:status")
r.set(f"item:{item_id}:status", current_status)
return last_status != current_status
五、注意事项
频率限制:单应用每日请求上限5000次
错误处理:针对invalid-session等错误码实现重试机制
数据缓存:对静态字段(如标题)建议本地存储减少API调用