×

api 数据挖掘

告别人工盯品!Open Claw 结合淘宝高级商品 API,一键搭建自动化监控选品系统(附完整可运行 Python 代码)

admin admin 发表于2026-06-30 15:08:41 浏览10 评论0

抢沙发发表评论

前言

做淘宝、无货源、跨境代发的运营应该都有同款痛点:每天花 2-3 小时翻竞品页面,手动记录价格、销量、库存变动,稍微分心就错过竞品降价、爆款上新窗口期;自己写爬虫又频繁遭遇 IP 封禁、页面改版失效,调试维护成本极高。

最近折腾出一套轻量化落地方案:依托标准化淘宝商品高级接口搭配 Open Claw 任务调度,不用复杂爬虫框架,几十行代码就能实现批量采集商品数据 + 定时监控异动 + 智能筛选潜力款,个人电脑、轻量云服务器都能稳定跑,数据覆盖 SKU 定价、真实销量、店铺评分、货源地址等选品核心维度,下面完整拆解落地流程与可复用代码。

一、方案核心优势:API+Open Claw 对比传统方式

1. 接口选型:taobao.item_get_pro 高级商品详情接口

放弃基础 item_get 接口,选用高级版商品查询接口,一次性返回全量选品字段,无需多次请求拼接数据,核心可获取信息:

  1. 基础信息:商品标题、主图、详情图、品牌、发货地、商品 ID (num_iid)

  2. 价格体系:日常售价、促销价、吊牌原价、多 SKU 独立定价

  3. 库存销量:单品总库存、各 SKU 库存、累计真实销量

  4. 店铺维度:掌柜昵称、店铺评分、是否天猫店、店铺 ID

  5. 属性规格:颜色 / 尺码套餐、配套赠品、商品功能参数

  6. 运营素材:商品短视频、属性对应主图、详情图文素材

接口统一返回标准 JSON,无需解析杂乱 HTML,不受淘宝前端页面改版影响,长期稳定可用。

2. Open Claw 承担的核心能力

Open Claw 轻量化调度工具完美补齐接口短板,解决重复开发问题:

  • 定时轮询:自定义分钟 / 小时周期,批量监控商品列表,7×24 小时无值守

  • 请求容错:内置失败重试、超时拦截、限流控制,避免频繁请求被限制

  • 数据清洗:自动过滤空字段、统一数值格式,一键导出 Excel 选品报表

  • 异动告警:对比历史数据,价格跳水、销量暴涨、库存见底自动标记

  • 批量扩展:支持百级商品 ID 同时监控,适配类目铺货、竞品全店跟踪

3. 四大落地优势

  1. 合规稳定:标准化接口通道,无爬虫风控风险,不用采购大量代理 IP

  2. 开发极简:不用学习爬虫、反爬、签名复杂逻辑,复制代码改凭证即可运行

  3. 成本低廉:个人开发者小额调用额度足够中小卖家日常监控,无需企业级资质

  4. 场景全覆盖:竞品价格监控、类目潜力款筛选、货源库存巡检、铺货素材采集

二、前置准备工作

  1. 申请接口调用凭证 key、secret(平台开通后获取专属密钥)

  2. 安装 Python 环境 3.8 及以上,依赖库:requests、schedule、pandas(报表导出)

pip install requests schedule pandas

3.准备需要监控的商品 ID(淘宝商品链接中 id = 后的数字即 num_iid)

4.Open Claw 基础配置:新建定时任务工作流,绑定 Python 脚本执行路径

三、完整实战代码(可直接复制运行)

3.1 接口请求核心封装函数

import requests
import json
import time
import pandas as pd
from schedule import every, run_pending

# ===================== 基础配置区(自行修改)=====================
API_GATEWAY = "https://api-gw.onebound.cn/taobao/item_get_pro"
API_KEY = "你的调用key"
API_SECRET = "你的调用secret"
# 待监控商品ID列表,批量添加多个商品实现同时监控
MONITOR_ITEM_IDS = ["520813250866"]
# 监控轮询周期,单位分钟
MONITOR_INTERVAL = 60
# 本地历史数据存储文件
HISTORY_FILE = "taobao_goods_monitor.csv"
# 价格下跌预警阈值,单位元,低于该数值触发标记
PRICE_ALERT_THRESHOLD = 30
# =================================================================

def get_taobao_goods_info(num_iid: str):
    """
    调用taobao.item_get_pro高级接口获取商品完整数据
    :param num_iid: 淘宝商品ID
    :return: 商品结构化字典数据
    """
    try:
        # 公共请求参数
        params = {
            "key": API_KEY,
            "secret": API_SECRET,
            "api_name": "item_get_pro",
            "num_iid": num_iid,
            "cache": "yes",
            "result_type": "json"
        }
        headers = {
            "Accept-Encoding": "gzip",
            "Connection": "close",
            "User-Agent": "OpenClaw-Monitor/1.0"
        }
        resp = requests.get(url=API_GATEWAY, params=params, headers=headers, timeout=15)
        resp.raise_for_status()
        res_data = resp.json()

        # 捕获接口异常
        if res_data.get("error") or res_data.get("error_code") != "0000":
            print(f"商品{num_iid}查询失败:{res_data.get('reason','未知错误')}")
            return None
        
        item_data = res_data.get("item", {})
        if not item_data:
            print(f"商品{num_iid}无商品数据,可能已下架")
            return None
        
        # 提取核心选品字段,精简冗余内容
        core_info = {
            "query_time": time.strftime("%Y-%m-%d %H:%M:%S"),
            "num_iid": item_data.get("num_iid"),
            "title": item_data.get("title"),
            "price": float(item_data.get("price", 0)),
            "original_price": float(item_data.get("orginal_price", 0)),
            "total_sales": int(item_data.get("total_sold", 0)),
            "stock": int(item_data.get("num", 0)),
            "shop_name": item_data.get("nick"),
            "shop_score": item_data.get("seller_info", {}).get("item_score", 0),
            "location": item_data.get("location"),
            "is_tmall": item_data.get("tmall"),
            "main_img": item_data.get("pic_url")
        }
        # SKU规格提取
        sku_list = item_data.get("skus", {}).get("sku", [])
        sku_text = ""
        for sku in sku_list:
            sku_text += f"{sku.get('properties_name')}|售价:{sku.get('price')}|库存:{sku.get('quantity')};"
        core_info["sku_detail"] = sku_text

        # 价格预警标记
        if core_info["price"] <= PRICE_ALERT_THRESHOLD:
            core_info["price_alert"] = "是"
        else:
            core_info["price_alert"] = "否"
        return core_info

    except Exception as e:
        print(f"接口请求异常{num_iid}:{str(e)}")
        return None

3.2 批量采集、数据存储、监控主逻辑

def batch_monitor_goods():
    """批量执行商品监控,落地本地CSV历史数据"""
    print(f"\n===== 开始执行新一轮监控 {time.strftime('%Y-%m-%d %H:%M:%S')} =====")
    all_goods_data = []
    for item_id in MONITOR_ITEM_IDS:
        goods_data = get_taobao_goods_info(item_id)
        if goods_data:
            all_goods_data.append(goods_data)
            print(f"✅ 成功采集:{goods_data['title']} 当前价{goods_data['price']}元")
        # 间隔1秒防限流
        time.sleep(1)
    
    if len(all_goods_data) == 0:
        print("本轮未获取到有效商品数据")
        return
    
    # 写入本地历史文件,无文件则新建,有文件追加
    new_df = pd.DataFrame(all_goods_data)
    try:
        old_df = pd.read_csv(HISTORY_FILE)
        merge_df = pd.concat([old_df, new_df], ignore_index=True)
    except FileNotFoundError:
        merge_df = new_df
    merge_df.to_csv(HISTORY_FILE, index=False, encoding="utf-8-sig")
    print(f"📊 本轮{len(all_goods)}条数据已存入本地文件{HISTORY_FILE}")

    # 筛选预警商品输出提示
    alert_goods = new_df[new_df["price_alert"] == "是"]
    if len(alert_goods) > 0:
        print("\n⚠️ 检测到价格预警商品:")
        for _, row in alert_goods.iterrows():
            print(f"商品ID{row['num_iid']} {row['title']} 现价{row['price']}元低于预警线")

def start_openclaw_task():
    """对接Open Claw定时调度,循环执行监控任务"""
    # 设置定时任务:每MONITOR_INTERVAL分钟执行一次监控
    every(MONITOR_INTERVAL).minutes.do(batch_monitor_goods)
    print(f"监控任务已启动,每{MONITOR_INTERVAL}分钟自动采集一次商品数据,Ctrl+C停止")
    while True:
        run_pending()
        time.sleep(1)

if __name__ == "__main__":
    start_openclaw_task()

四、代码使用 & Open Claw 调度配置教程

1. 代码修改要点

  1. 替换API_KEYAPI_SECRET为自己申请的调用凭证;

  2. MONITOR_ITEM_IDS填入需要监控的竞品 / 货源商品 ID,支持批量逗号分隔;

  3. MONITOR_INTERVAL调整监控周期,短则 10 分钟,长则 240 分钟;

  4. PRICE_ALERT_THRESHOLD自定义降价预警价格,适配不同品类选品标准。

2. Open Claw 任务绑定步骤

  1. 打开 Open Claw 客户端,新建定时自动化工作流

  2. 添加执行动作:运行本地 Python 脚本,粘贴当前文件本地路径;

  3. 工作流执行周期与代码内MONITOR_INTERVAL保持一致;

  4. 开启开机自启、断线自动重跑,实现 24 小时无人监控;

  5. 拓展进阶:新增 Webhook 动作,预警商品自动推送至企业微信 / 钉钉群。

3. 数据查看与选品分析

脚本运行后本地生成taobao_goods_monitor.csv表格,包含每一轮采集的时间、价格、销量、SKU 明细:

  1. 竞品监控:筛选同一店铺商品,对比历史价格判断是否开启促销;

  2. 潜力款筛选:设置筛选条件「销量 > 50、价格 40-120、库存充足」挖掘蓝海商品;

  3. 货源巡检:长期跟踪发货地、库存变化,规避经常断货供应商;

  4. 价格战预警:表格筛选 price_alert = 是的商品,及时调整自身定价策略。

五、拓展进阶优化方案(生产级可用)

  1. 关键词批量搜品:搭配 item_search 高级搜索接口,输入类目关键词批量抓取同品类商品,自动打分筛选潜力款;

  2. 数据库存储:替换 CSV 为 SQLite/MySQL,支持历史价格曲线绘制;

  3. SKU 精细化监控:单独提取每个规格库存,针对爆款尺码缺货预警;

  4. 图片素材本地化:新增图片下载函数,自动保存商品主图、详情图用于铺货;

  5. 异常自动邮件:接口查询失败、商品下架时发送邮件通知运维。

六、避坑实战经验

  1. 调用间隔不要低于 30 秒,高频请求容易触发接口限流,配合 Open Claw 间隔控制;

  2. 商品 ID 失效、商品下架时接口会返回 item-not-found,代码已做捕获不会中断整体任务;

  3. 导出 CSV 必须使用utf-8-sig编码,避免 Excel 打开中文乱码;

  4. Open Claw 后台关闭自动缓存,保证每次拉取实时最新商品数据;

  5. 不要一次性添加上百个商品同时轮询,分批分组监控稳定性更好。

结语

这套方案把电商选品最耗时的人工监控环节完全自动化,不用深耕爬虫技术,零基础运营、初级开发都能快速落地。依托 taobao.item_get_pro 高级接口拿到完整商品数据,配合 Open Claw 实现定时调度与数据管理,长期积累的时序商品数据可以形成自己的选品数据库,大幅降低盲目铺货、错过爆款的风险。


少长咸集

群贤毕至

访客