×

api 数据挖掘

电商竞品全自动监控 + 数据分析落地教程,半小时搞定全品类行情追踪

admin admin 发表于2026-07-13 17:50:54 浏览8 评论0

抢沙发发表评论

前言

做电商运营、产品调研、市场分析的朋友应该都有同款痛点: 想盯同行定价、活动优惠、销量波动、评价风向,手动复制粘贴商品页面、整理表格,每天耗费 2-3 小时;大促节点竞品调价、上新节奏完全跟不上,错过最佳调价、备货时机;多品类、几十上百款商品同步追踪时,人工统计极易漏数据、错数据,历史行情也没法留存复盘。

试过自建采集脚本、多浏览器轮询监控,要么频繁触发平台限制,要么代码维护成本极高,新增监控商品就要改一堆逻辑。后来接触到一套成熟稳定的数据抓取工具(Open Claw),无需复杂底层搭建,开箱实现商品全维度实时监控,搭配 Python 完成数据清洗、可视化分析,个人 / 中小企业不用投入服务器、代理池成本,单人就能完成全流程市场监测。

本文完整分享落地流程,附带可直接运行的 Python 代码,覆盖商品定时监控、数据存储、行情统计、价格波动预警四大核心场景,适配国内主流电商平台商品数据处理。

一、方案整体思路

整套流程分为三层,低门槛实现自动化监测:

  1. 数据获取层:依托成熟云端数据能力,输入商品标识即可一键拉取完整商品信息(售价、活动价、销量、库存、图文详情、评价、店铺资质等),内置访问调度机制,规避平台访问限制,支持批量商品批量同步。

  2. 自动化监控层:设置定时轮询周期(10 分钟 / 1 小时 / 每日),对比前后两次抓取的数据,识别价格变动、上新、下架、优惠活动、差评激增等异动,自动留存历史快照。

  3. 数据分析应用层:Python 读取本地存储的数据,完成数据清洗、价格区间分布统计、销量趋势绘图、竞品分层分析,生成 Excel 报表,支持配置消息提醒(企业微信 / 邮件)。

优势对比传统手动采集 / 自研爬虫:

  • 无需搭建代理池、解决访问封禁、验证码拦截等问题

  • 批量一次性导入上百款商品,统一管理监控清单

  • 自动留存历史数据,支持长期行情回溯

  • 代码轻量化,零基础运营也能直接复用

二、环境准备

本地仅需安装 Python 基础依赖,执行安装命令:

pip install requests pandas matplotlib openpyxl schedule

依赖说明:

  • requests:本地程序与数据工具交互

  • pandas:数据清洗、表格导出

  • matplotlib:行情可视化绘图

  • schedule:本地定时任务,循环监控

  • openpyxl:读写 Excel 文件

三、完整实操代码实现

3.1 基础配置与数据拉取核心函数

import requests
import json
import pandas as pd
import matplotlib.pyplot as plt
import schedule
import time
from datetime import datetime
import os

# 基础配置
# 工具后台获取的个人凭证(替换为自己账号生成的密钥)
TOKEN = "xxxxxxxxxxxxxxxxxxxx"
# 需要监控的商品ID列表,批量新增直接追加
MONITOR_GOODS = ["723456123987", "723456987654", "723456543210"]
# 数据存储文件
DATA_FILE = "goods_monitor_data.csv"
# 绘图字体适配中文
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei"]
plt.rcParams["axes.unicode_minus"] = False

def get_goods_info(item_id):
    """
    调用云端数据能力,获取单款商品完整信息
    :param item_id: 商品唯一标识
    :return: 结构化商品字典数据
    """
    headers = {
        "Content-Type": "application/json"
    }
    params = {
        "token": TOKEN,
        "item_id": item_id
    }
    # 工具数据请求地址
    resp = requests.get("https://data-claw.collector.work/shop/goods", headers=headers, params=params)
    res_data = resp.json()
    if res_data.get("code") != 200:
        print(f"商品{item_id}数据获取失败:{res_data.get('msg')}")
        return None
    info = res_data.get("data")
    # 提取核心业务字段
    result = {
        "crawl_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        "item_id": item_id,
        "title": info.get("title"),
        "price": float(info.get("price", 0)),
        "prom_price": float(info.get("prom_price", 0)),
        "sales": int(info.get("sales", 0)),
        "stock": int(info.get("stock", 0)),
        "shop_name": info.get("shop_name"),
        "score": float(info.get("score", 0)),
        "review_count": int(info.get("review_count", 0))
    }
    return result

3.2 数据存储与异动检测函数

def save_and_check_change(goods_data):
    """
    写入本地CSV历史文件,对比历史数据识别价格/销量异动
    """
    if not goods_data:
        return
    # 初始化数据文件
    if not os.path.exists(DATA_FILE):
        df_init = pd.DataFrame([goods_data])
        df_init.to_csv(DATA_FILE, index=False, encoding="utf-8-sig")
        print(f"首次录入商品{goods_data['item_id']}监控数据")
        return
    # 读取历史数据
    df_history = pd.read_csv(DATA_FILE, encoding="utf-8-sig")
    item_id = goods_data["item_id"]
    # 筛选该商品历史最新一条记录
    history_item = df_history[df_history["item_id"] == item_id]
    # 写入新数据
    df_new = pd.concat([df_history, pd.DataFrame([goods_data])], ignore_index=True)
    df_new.to_csv(DATA_FILE, index=False, encoding="utf-8-sig")

    # 异动判断逻辑
    if len(history_item) > 0:
        last_record = history_item.iloc[-1]
        price_old = last_record["prom_price"]
        price_new = goods_data["prom_price"]
        sales_old = last_record["sales"]
        sales_new = goods_data["sales"]
        # 价格变动预警(差价大于5元触发提醒)
        if abs(price_new - price_old) > 5:
            print(f"【价格异动提醒】商品{goods_data['title']},原价{price_old}→现价{price_new}")
        # 销量暴涨提醒(单次增量超200)
        if sales_new - sales_old > 200:
            print(f"【销量暴涨提醒】商品{goods_data['title']},新增销量{sales_new - sales_old}")

3.3 批量监控主任务

def monitor_task():
    """单次批量监控任务,循环所有商品"""
    print(f"\n===== 开始执行批量监控 {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} =====")
    for good_id in MONITOR_GOODS:
        data = get_goods_info(good_id)
        if data:
            save_and_check_change(data)
    print("===== 本轮监控执行完成 =====")

3.4 数据分析与可视化报表函数

def data_analysis_export():
    """读取全部历史数据,统计分析并导出Excel+价格趋势图"""
    if not os.path.exists(DATA_FILE):
        print("暂无监控数据,无法分析")
        return
    df = pd.read_csv(DATA_FILE, encoding="utf-8-sig")
    # 1. 基础统计
    stat_df = df.groupby(["item_id", "title"]).agg(
        min_price=("prom_price", "min"),
        max_price=("prom_price", "max"),
        avg_price=("prom_price", "mean"),
        total_sales=("sales", "max"),
        latest_score=("score", "last")
    ).reset_index()
    # 导出统计报表
    stat_df.to_excel("竞品行情统计报表.xlsx", index=False)
    print("行情统计报表已生成:竞品行情统计报表.xlsx")

    # 2. 绘制价格趋势图(取第一个商品做示例)
    target_id = MONITOR_GOODS[0]
    target_data = df[df["item_id"] == target_id].sort_values("crawl_time")
    if len(target_data) > 1:
        fig, ax = plt.subplots(figsize=(12, 6))
        ax.plot(target_data["crawl_time"], target_data["prom_price"], marker="o", label="活动售价")
        ax.set_title("商品价格历史波动趋势")
        ax.set_xlabel("监控时间")
        ax.set_ylabel("价格(元)")
        plt.xticks(rotation=45)
        ax.legend()
        plt.tight_layout()
        plt.savefig("price_trend.png")
        print("价格趋势图表已保存:price_trend.png")

3.5 定时循环启动入口

if __name__ == "__main__":
    # 设置每1小时自动执行一轮监控,可修改为30/60/120分钟
    schedule.every(1).hours.do(monitor_task)
    # 程序启动先执行一次监控+数据分析
    monitor_task()
    data_analysis_export()
    print("\n监控程序后台运行中,每小时自动同步数据,按Ctrl+C终止")
    # 持续循环调度
    while True:
        schedule.run_pending()
        time.sleep(60)

四、代码使用说明

  1. 凭证替换:代码中TOKEN替换为 Open Claw 后台个人专属密钥,登录工具后台即可一键生成,权限默认开放商品全字段查询;

  2. 监控商品新增:修改MONITOR_GOODS列表,填入平台商品 ID,支持几十上百款批量监控;

  3. 监控周期调整schedule.every(1).hours修改数字,0.5 代表 30 分钟,2 代表 2 小时;

  4. 预警阈值自定义:异动检测中价格差值、销量增量数值可按需修改,适配低价小商品 / 高客单价大件;

  5. 拓展消息推送:可自行接入企业微信机器人、邮件发送模块,异动时自动推送消息到工作群,不用反复查看程序日志。

五、落地效果与业务应用场景

场景 1:竞品定价监控

定时抓取同行日常售价、大促活动价,通过生成的价格趋势图,清晰看到竞品调价节点、优惠力度,结合自身成本调整定价区间,避免低价内卷或定价过高丢失流量。统计报表自动输出单品历史最低价、均价,快速锁定竞品价格带。

场景 2:爆款销量追踪

持续监测竞品销量变化,识别短时间销量暴涨的爆款,反向拆解标题、主图、活动玩法、评价关键词,复刻爆款运营逻辑;同时监控自身同款商品,及时发现销量下滑,排查价格、评价、流量问题。

场景 3:批量市场类目分析

导入整个类目几十上百款商品 ID,长期采集后用 Pandas 做整体价格区间分布、店铺评分分层、销量梯队划分,输出类目市场报告,作为选品、备货、上新的核心数据依据,替代人工逐页截图统计。

场景 4:库存与活动监测

同步抓取商品库存数据,监控竞品是否清仓、断货,抓住竞品缺货窗口期加大推广;识别满减、优惠券、第二件半价等活动,同步跟进营销活动节奏。

六、避坑优化小技巧

  1. 数据存储轻量化:长期监控会积累大量历史快照,可增加定时清理 30 天前旧数据的逻辑,避免 CSV 文件过大加载缓慢;

  2. 异常容错增强:代码可新增 try-except 捕获网络波动,监控失败自动重试,防止单次接口超时中断整轮批量任务;

  3. 多账号分区监控:若需要区分不同类目、不同竞品店铺,可复制多份监控列表,分开存储数据文件,报表互不干扰;

  4. 本地部署轻量化:程序支持 Windows、Mac、Linux 服务器后台挂起运行,服务器 24 小时不间断监控,本地电脑仅需运行时查看报表即可。

七、总结

以往做电商市场监测,要么靠人工低效统计,要么投入大量开发成本搭建采集体系,对中小商家、个人运营极不友好。借助 Open Claw 一站式数据能力,搭配几十行轻量化 Python 代码,零底层开发成本实现7×24 小时全自动商品监控,自动留存历史数据、识别异动、输出可视化分析报表。

整套方案落地门槛极低,运营不懂编程也能直接复制代码修改配置使用,长期积累的市场数据可以形成完整竞品数据库,为定价、选品、营销、备货提供客观数据支撑,大幅降低市场调研人力成本。

后续可在此基础上拓展进阶功能:评价文本情感分析、类目热销词提取、多平台商品比价、自动生成每日市场简报,完整搭建属于自己的轻量化电商数据监测体系。


少长咸集

群贤毕至

访客