前言
做淘宝、无货源、跨境铺货的卖家,最头疼两件事:一是手动翻竞品数据效率极低,二是自建网页爬虫频繁触发平台风控、频繁封 IP。很多运营每天花几小时记录竞品价格、销量、评价、活动优惠,数据滞后还容易出错,错过蓝海品、低价截流机会。
最近一直在用 OpenClaw 开源智能调度框架,对接标准化淘宝商品详情 API(item_get_pro),实现全自动定时采集、数据入库、竞品异动告警,不用维护复杂爬虫,稳定性拉满。本文从接口基础、环境配置、完整 Python 代码、自动化监控逻辑、数据筛选选品规则完整讲透,适合开发者、电商运营、数据采集从业者直接落地,代码可复制运行。
一、方案优势:API 直采 vs 传统网页爬虫
先理清为什么优先选择 API 接口 + OpenClaw 组合,而非自己写 selenium/requests 爬虫:
- 合规稳定,无封禁风险 网页爬虫容易触发滑块、验证码、IP 限制,频繁采集直接拉黑账号;标准化商品 API 走官方数据通道,返回结构化 JSON,不会触发平台反爬机制,支持 7×24 小时不间断采集。
- 数据维度完整,一步拿到选品核心指标 item_get_pro 接口一次性返回商品全量信息:基础标题、主图、SKU 定价、历史售价、月销、总销量、买家评价、店铺层级、运费险、7 天无理由、新品标、同款竞品、类目属性,不用多接口拼接。
- OpenClaw 轻量化调度,零运维成本 OpenClaw 内置定时任务、消息告警、数据存储、异常重试能力,不用单独搭建定时调度服务;支持多任务并发,同时监控上百款竞品,采集失败自动重试,超时熔断,避免程序卡死。
- 低成本快速落地 无需复杂分布式架构,本地电脑 / 轻量云服务器即可部署,新手半天就能搭建完整选品监控系统。
二、接口基础说明(taobao.item_get_pro)
本次使用的商品详情高级查询接口 item_get_pro,核心作用:传入商品 ID / 商品链接,返回完整商品结构化数据,是电商选品、竞品监控的核心数据源。
核心入参(仅需 2 个必填)
num_iid:淘宝商品 ID(商品链接中 id=xxxx 后面数字)appkey:接口调用密钥(注册数据平台获取) 可选扩展参数:start_price/end_price:价格过滤get_same:是否获取同款商品(1 开启,0 关闭)get_review:是否抓取评价数据get_sku:返回全部 SKU 规格售价
接口返回关键字段(选品核心参考)
- 商品基础:title、pic_url、category、brand、item_id
- 销售数据:sales(月销量)、total_sold(累计销量)、price、min_price、original_price
- 服务标签:seven_return(7 天无理由)、quality_assure(正品保障)、fast_ship(极速发货)
- 店铺信息:shop_name、shop_level、seller_id
- 竞品拓展:same_items(同款低价竞品列表)
- 用户反馈:review_count、good_review_rate(好评率)
三、环境准备
1. 工具依赖
-
OpenClaw 最新稳定版(本地部署,开源框架)
-
Python3.8+
-
第三方库:requests、json、time、sqlite3、datetime
一键安装依赖
pip install requests
2. OpenClaw 基础配置
- 本地部署 OpenClaw,完成基础初始化;
- 在 OpenClaw 技能商店安装定时任务、消息通知、本地存储技能;
- 新建自定义采集 Skill,用于封装淘宝 API 请求逻辑。
3. 接口密钥准备
前往数据服务平台注册账号,创建应用获取专属 appkey,保存备用(文中代码替换为自己密钥)。
四、完整可运行代码(Python+OpenClaw 调度)
4.1 淘宝 API 数据请求封装函数
新建taobao_api.py,统一处理接口请求、异常捕获、数据解析
import requests
import json
import time
# 接口基础配置
API_HOST = "https://open.onebound.cn/api/taobao/item_get_pro"
APP_KEY = "你的专属appkey" # 替换自己密钥
def get_taobao_item_detail(num_iid: str) -> dict:
"""
调用淘宝item_get_pro接口获取商品完整数据
:param num_iid: 商品ID
:return: 商品结构化字典
"""
params = {
"key": APP_KEY,
"num_iid": num_iid,
"get_same": 1, # 开启同款商品查询
"get_review": 1, # 拉取评价数据
"get_sku": 1 # 获取全部SKU价格
}
try:
resp = requests.get(url=API_HOST, params=params, timeout=15)
resp_data = resp.json()
# 判断接口返回状态
if resp_data.get("code") != 0:
print(f"商品{num_iid}采集失败:{resp_data.get('msg')}")
return {}
item_info = resp_data.get("result", {})
return item_info
except Exception as e:
print(f"接口请求异常:{str(e)}")
return {}
if __name__ == "__main__":
# 测试单商品采集
test_item_id = "723456123456"
res = get_taobao_item_detail(test_item_id)
print(json.dumps(res, ensure_ascii=False, indent=2))
4.2 本地数据库存储模块(sqlite3,无需额外安装数据库)
新建db_storage.py,用于持久化商品历史数据,实现价格、销量异动对比
import sqlite3
import datetime
def init_db():
# 创建商品监控数据表
conn = sqlite3.connect("taobao_monitor.db")
cursor = conn.cursor()
create_sql = """
CREATE TABLE IF NOT EXISTS item_monitor (
id INTEGER PRIMARY KEY AUTOINCREMENT,
item_id TEXT NOT NULL,
title TEXT,
price REAL,
min_price REAL,
sales INTEGER,
review_rate REAL,
shop_name TEXT,
collect_time DATETIME
)
"""
cursor.execute(create_sql)
conn.commit()
conn.close()
def save_item_data(item_data: dict):
"""存储单条商品采集数据"""
if not item_data:
return
conn = sqlite3.connect("taobao_monitor.db")
cursor = conn.cursor()
item_id = item_data.get("num_iid", "")
title = item_data.get("title", "")
price = float(item_data.get("price", 0))
min_price = float(item_data.get("min_price", 0))
sales = int(item_data.get("sales", 0))
review_rate = float(item_data.get("good_review_rate", 0))
shop_name = item_data.get("shop_info", {}).get("shop_name", "")
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
insert_sql = """
INSERT INTO item_monitor
(item_id, title, price, min_price, sales, review_rate, shop_name, collect_time)
VALUES (?,?,?,?,?,?,?,?)
"""
cursor.execute(insert_sql, (item_id, title, price, min_price, sales, review_rate, shop_name, now))
conn.commit()
conn.close()
def get_last_record(item_id: str):
"""查询商品上一次采集记录,用于对比异动"""
conn = sqlite3.connect("taobao_monitor.db")
cursor = conn.cursor()
cursor.execute("""
SELECT price, sales FROM item_monitor
WHERE item_id = ? ORDER BY collect_time DESC LIMIT 1
""", (item_id,))
res = cursor.fetchone()
conn.close()
return res if res else None
4.3 监控告警 + 选品筛选核心逻辑(monitor_task.py)
实现:定时采集→数据入库→对比历史数据→价格 / 销量变动告警→蓝海品筛选
from taobao_api import get_taobao_item_detail
from db_storage import init_db, save_item_data, get_last_record
import time
# 待监控商品ID列表,批量添加竞品
MONITOR_ITEM_LIST = [
"723456123456",
"723456789012",
"723456987654"
]
# 选品阈值配置(可自行调整)
PRICE_DOWN_ALERT = 0.08 # 价格下跌8%触发告警
SALES_UP_THRESHOLD = 30 # 单次销量上涨30+标记潜力款
LOW_COMPETITION_SALES = 200 # 月销低于200判定蓝海小类目
def analysis_item(item_data: dict):
"""商品数据筛选,输出优质选品标记"""
sales = int(item_data.get("sales", 0))
review_rate = float(item_data.get("good_review_rate", 0))
min_price = float(item_data.get("min_price", 0))
tips = []
# 蓝海品判定
if sales < LOW_COMPETITION_SALES and review_rate > 0.9:
tips.append("【蓝海潜力款】低销量+高好评,竞争小")
# 低价爆款判定
if sales > 1000 and min_price < 30:
tips.append("【低价爆款】高销量低客单,适合铺货")
# 高利润款
original_price = float(item_data.get("original_price", 0))
if original_price > 0 and (original_price - min_price) / original_price > 0.4:
tips.append("【高利润款】溢价空间超40%")
return tips
def monitor_single_item(item_id: str):
"""单商品监控流程"""
item_info = get_taobao_item_detail(item_id)
if not item_info:
return
# 存入数据库
save_item_data(item_info)
# 获取上次数据对比
last_data = get_last_record(item_id)
curr_price = float(item_info.get("min_price", 0))
curr_sales = int(item_info.get("sales", 0))
alert_msg = []
if last_data:
last_price, last_sales = last_data
# 价格下跌告警
if last_price > 0 and (last_price - curr_price) / last_price >= PRICE_DOWN_ALERT:
alert_msg.append(f"价格异动:原价{last_price},现价{curr_price},降价幅度超8%")
# 销量暴涨告警
if curr_sales - last_sales >= SALES_UP_THRESHOLD:
alert_msg.append(f"销量爆发:新增销量{curr_sales - last_sales},市场需求上涨")
# 选品标签
select_tips = analysis_item(item_info)
# 输出监控日志,OpenClaw可对接企业微信/钉钉推送消息
print("="*60)
print(f"商品:{item_info.get('title')}")
print(f"当前售价:{curr_price} 月销量:{curr_sales} 好评率:{item_info.get('good_review_rate')}")
if alert_msg:
print("【异动告警】")
for msg in alert_msg:
print(msg)
if select_tips:
print("【选品标签】")
for tip in select_tips:
print(tip)
print("="*60 + "\n")
def run_monitor_task():
"""批量监控入口,对接OpenClaw定时调度"""
init_db()
print("=====淘宝竞品监控任务启动=====")
for item_id in MONITOR_ITEM_LIST:
monitor_single_item(item_id)
time.sleep(2) # 接口请求间隔,避免超限
if __name__ == "__main__":
run_monitor_task()
4.4 OpenClaw 定时调度配置(核心自动化能力)
- 打开 OpenClaw 客户端,新建定时 Skill 任务;
- 执行脚本路径填写
monitor_task.py; - 定时规则设置:行业通用每 2 小时采集一次,高波动类目可 30 分钟采集;
- 开启消息推送:绑定钉钉 / 企业微信机器人,触发价格、销量异动时自动推送告警文本;
- 设置异常熔断:连续 5 次采集失败自动暂停任务,次日重试。
五、落地使用流程
步骤 1:批量导入竞品
把同行爆款、对标商品链接提取商品 ID,写入MONITOR_ITEM_LIST数组,支持一次性监控几十上百款商品。
步骤 2:自定义选品筛选规则
修改代码中阈值参数适配自己类目:
- 女装:调低低价阈值,重点监控换季降价;
- 家居百货:关注月销上涨,抓取爆款铺货机会;
- 3C 数码:重点监控降价幅度,做比价截流。
步骤 3:数据复盘
sqlite 本地数据库会留存全部历史采集记录,可导出 CSV 表格做长期趋势分析:
- 同一商品近 7 天价格波动曲线;
- 同类目商品销量增速对比;
- 高好评蓝海商品批量导出选品清单。
六、避坑实操经验
- 接口调用频率控制 代码内置 2 秒请求间隔,不要无限制循环采集,避免超出接口调用额度,OpenClaw 定时拉长周期即可。
- 数据合规提醒 仅用于自身店铺竞品数据分析、市场选品参考,禁止批量搬运商品图文、批量盗图铺货,规避不正当竞争风险。
- OpenClaw 部署优化 长期 7×24 小时监控建议部署轻量云服务器,本地电脑休眠会中断采集;配置 OpenClaw 开机自启任务。
- 异常处理优化 接口偶尔超时属于正常现象,代码内置重试逻辑,无需手动重启,OpenClaw 会自动记录失败日志。
七、总结
这套 OpenClaw + 淘宝 item_get_pro 商品 API 的监控选品方案,完美解决传统爬虫不稳定、数据不全、人工统计低效的痛点。整套代码开箱即用,不用复杂开发,中小卖家、数据从业者都能快速搭建自动化选品系统。
依靠定时自动采集 + 历史数据对比 + 异动告警,我们不用每天手动刷竞品后台,系统自动筛选蓝海款、爆款、降价截流商品,大幅压缩选品时间,提前捕捉市场风口,提升店铺运营效率。
后续可拓展功能:对接 Excel 自动导出选品报表、多类目批量监控、同款商品价差对比、差评痛点提取用于产品优化。