×

api 数据挖掘

低成本搭建电商商品评论监控分析系统|从实时采集到口碑洞察完整实战(附可运行 Python 代码)

admin admin 发表于2026-07-17 17:28:04 浏览6 评论0

抢沙发发表评论

前言

做电商运营、产品调研、竞品分析的朋友应该都有同样痛点:想要持续追踪商品真实用户反馈,手动翻评论效率极低,批量多商品监控、历史评论沉淀、差评预警、痛点关键词提取全靠人工几乎不现实。

传统本地爬虫方案有三大硬伤:页面频繁改版导致脚本失效、频繁访问触发平台风控被限制、多商品定时轮询需要大量服务器资源维护。今天分享一套轻量化落地方案,借助 OpenClaw 一站式数据能力,无需复杂逆向、不用搭建代理池,几分钟完成商品全量评论采集、增量实时监控、文本情感数据分析,个人 / 中小团队零成本即可落地。

本文完整覆盖工具配置、数据拉取、持久化存储、定时增量监控、评论情感分析、差评告警全流程,代码开箱即用,适配淘宝 / 天猫全品类商品,适合 CSDN、知乎技术分享阅读。

一、方案整体架构

整套系统分为四大模块,普通电脑 / 轻量云服务器就能稳定运行,无分布式部署门槛:

  1. 数据同步模块:依托 OpenClaw 稳定数据通道,输入商品标识即可拉取评论全字段,包含评分、评论文本、晒图、追评、购买规格、评价时间、买家秀视频等完整信息,支持按最新评论排序分页拉取;

  2. 增量监控模块:基于评论唯一标识做数据去重,定时循环轮询,只抓取新增评论,减少资源消耗,实现 7×24 小时口碑实时监控;

  3. 数据清洗存储模块:过滤空评论、重复无效内容,统一结构化后存入 CSV 文件(小型项目)或 SQLite 数据库(长期大批量监控);

  4. 智能分析预警模块:结合分词与情感判断区分好评 / 中评 / 差评,统计负面高频痛点词,新增差评自动推送提醒,输出评分分布、口碑变化趋势数据。

二、前期工具基础配置

  1. 登录管理后台,新建数据采集项目,系统自动生成专属身份校验令牌与项目编号;

  2. 后台自定义采集频率、单次拉取条数,内置平台访问防护策略,无需手动处理访问限制;

  3. 支持多商品分组管理,可分开监控自家店铺商品与竞品商品,数据隔离便于独立复盘;

  4. 提前提取目标商品 ID:商品详情页链接中id=后一串数字即为商品唯一标识,作为代码核心入参。

配置完成后,仅需将后台生成的凭证填入代码变量,即可直接启动采集流程。

三、完整 Python 实战代码

3.1 依赖安装

pip install requests pandas jieba snownlp schedule

3.2 核心采集 + 增量监控主脚本

import requests
import pandas as pd
import time
import schedule
from snownlp import SnowNLP
import os

# ===================== 配置区,替换为你后台生成的凭证 =====================
TOKEN = "你的后台TOKEN"
PROJECT_ID = "你的项目编号"
MONITOR_ITEM_IDS = ["600530677643", "698754321098"]  # 需要监控的商品ID列表
SAVE_FILE = "商品评论数据.csv"
MONITOR_INTERVAL = 10  # 监控轮询间隔,单位:分钟
# =======================================================================

# 全局存储已采集评论ID,用于增量去重
saved_review_ids = set()

def init_history_data():
    """初始化历史数据,读取已保存评论ID"""
    global saved_review_ids
    if os.path.exists(SAVE_FILE):
        df = pd.read_csv(SAVE_FILE, encoding="utf-8-sig")
        saved_review_ids = set(df["评论唯一ID"].dropna().tolist())
        print(f"加载历史数据,已有历史评论 {len(saved_review_ids)} 条")
    else:
        print("暂无历史数据,首次全量采集")

def get_goods_review(item_id, page=1, sort=1):
    """
    拉取商品评论数据
    :param item_id: 商品ID
    :param page: 分页页码
    :param sort: 1=最新评论排序,0=默认排序
    :return: 单页评论列表
    """
    headers = {
        "Content-Type": "application/json"
    }
    params = {
        "token": TOKEN,
        "project_id": PROJECT_ID,
        "goods_id": item_id,
        "page": page,
        "sort": sort
    }
    try:
        resp = requests.get("https://data-collect.openclaw.cloud/goods/review", headers=headers, params=params, timeout=20)
        res_json = resp.json()
        if res_json.get("code") != 200:
            print(f"商品{item_id}第{page}页请求失败:{res_json.get('msg')}")
            return []
        return res_json.get("data", [])
    except Exception as e:
        print(f"网络请求异常:{str(e)}")
        return []

def parse_review_raw(raw_list, item_id):
    """解析原始返回数据,结构化清洗"""
    review_list = []
    for item in raw_list:
        review_id = item.get("rate_id", "")
        if review_id in saved_review_ids:
            continue
        # 单条评论结构化字段
        review_info = {
            "商品ID": item_id,
            "评论唯一ID": review_id,
            "买家昵称": item.get("display_user_nick", ""),
            "评论星级": item.get("rate_star", ""),
            "评论正文": item.get("rate_content", ""),
            "购买规格": item.get("auction_sku", ""),
            "评论时间": item.get("rate_date", ""),
            "晒图链接": ",".join(item.get("pics", [])) if item.get("pics") else "",
            "追评内容": item.get("add_feedback", ""),
            "追评图片": ",".join(item.get("add_feedback_images", [])) if item.get("add_feedback_images") else "",
            "评价视频": item.get("video", "")
        }
        # 简单情感分析
        text_all = review_info["评论正文"] + review_info["追评内容"]
        if text_all.strip():
            s = SnowNLP(text_all)
            sentiment_score = s.sentiments
            if sentiment_score >= 0.6:
                review_info["情感标签"] = "好评"
            elif sentiment_score >= 0.3:
                review_info["情感标签"] = "中评"
            else:
                review_info["情感标签"] = "差评"
                # 新增差评触发告警逻辑,可扩展企业微信/邮件推送
                print(f"【差评预警】商品{item_id}新增差评:{review_info['评论正文']}")
        else:
            review_info["情感标签"] = "无内容"
        saved_review_ids.add(review_id)
        review_list.append(review_info)
    return review_list

def batch_crawl_item(item_id):
    """单商品全量/增量采集"""
    all_new_data = []
    page = 1
    while True:
        raw_data = get_goods_review(item_id, page=page, sort=1)
        if not raw_data:
            break
        page_data = parse_review_raw(raw_data, item_id)
        if not page_data:
            # 当前页无新增评论,停止分页
            break
        all_new_data.extend(page_data)
        page += 1
        time.sleep(1)
    return all_new_data

def save_to_csv(new_data):
    """数据持久化保存至CSV"""
    if not new_data:
        return
    df_new = pd.DataFrame(new_data)
    if os.path.exists(SAVE_FILE):
        df_old = pd.read_csv(SAVE_FILE, encoding="utf-8-sig")
        df_merge = pd.concat([df_old, df_new], ignore_index=True)
    else:
        df_merge = df_new
    df_merge.to_csv(SAVE_FILE, index=False, encoding="utf-8-sig")
    print(f"本次新增评论 {len(new_data)} 条,已完成存储")

def monitor_task():
    """定时监控主任务"""
    print("===== 启动一轮商品评论监控 =====")
    init_history_data()
    total_new = []
    for goods_id in MONITOR_ITEM_IDS:
        print(f"正在采集商品 {goods_id} 新增评论...")
        new_comments = batch_crawl_item(goods_id)
        total_new.extend(new_comments)
    save_to_csv(total_new)
    print("===== 本轮监控执行完成,等待下一轮 ====\n")

if __name__ == "__main__":
    # 初始化历史数据
    init_history_data()
    # 定时任务配置,每10分钟执行一次监控
    schedule.every(MONITOR_INTERVAL).minutes.do(monitor_task)
    print(f"监控系统已启动,每{MONITOR_INTERVAL}分钟自动拉取新增评论,Ctrl+C停止程序")
    # 常驻循环
    while True:
        schedule.run_pending()
        time.sleep(30)

3.3 评论数据分析脚本(痛点关键词统计 + 评分分布)

import pandas as pd
import jieba
from collections import Counter
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

def analyze_comment_data(file_path):
    df = pd.read_csv(file_path, encoding="utf-8-sig")
    print("=== 商品评论整体统计 ===")
    print(f"总评论条数:{len(df)}")
    print(df["情感标签"].value_counts())
    print("-" * 40)

    # 提取差评文本,分词统计高频痛点词
    bad_comments = df[df["情感标签"] == "差评"]["评论正文"].tolist()
    all_text = "".join(bad_comments)
    words = jieba.lcut(all_text)
    # 过滤无意义停用词
    stop_words = {"的", "了", "很", "有点", "还是", "就是", "感觉", "这个", "买", "收到"}
    word_filter = [w for w in words if len(w) > 1 and w not in stop_words]
    word_count = Counter(word_filter)
    print("差评高频痛点关键词Top15:")
    for word, cnt in word_count.most_common(15):
        print(f"{word}:{cnt}次")

    # 绘制情感分布饼图
    emo_count = df["情感标签"].value_counts()
    plt.figure(figsize=(8, 6))
    plt.pie(emo_count.values, labels=emo_count.index, autopct="%1.2f%%", colors=["#66cc66", "#ffcc66", "#ff6666", "#cccccc"])
    plt.title("商品评论情感分布")
    plt.savefig("评论情感分布.png", dpi=300)
    plt.show()

if __name__ == "__main__":
    analyze_comment_data("商品评论数据.csv")

四、代码核心能力说明

  1. 增量去重机制:启动时自动读取历史所有评论唯一标识,轮询时仅抓取全新评论,避免重复存储,大幅降低存储占用;

  2. 全字段完整覆盖:自动拉取用户昵称、星级、正文、购买规格、晒图、追评、视频等运营核心分析字段,无需额外二次处理;

  3. 定时长效监控:依靠 schedule 库实现后台常驻运行,自定义监控间隔,多商品批量同步追踪;

  4. 自动情感分类:SnowNLP 轻量化文本情感模型,自动区分好评 / 中评 / 差评,出现差评实时控制台预警,可自行扩展对接企业微信、钉钉消息推送;

  5. 可视化数据分析:一键统计差评高频痛点词,生成情感分布饼图,快速定位产品质量、物流、售后等核心问题;

  6. 低门槛部署:纯 Python 脚本,无复杂依赖,Windows、Mac、Linux、轻量云服务器均可直接运行。

五、落地业务场景

场景 1:自有店铺口碑实时监控

运营人员无需每天手动刷商品评论,程序自动定时抓取新增评价,一旦出现差评立刻预警,可第一时间联系用户处理售后,降低店铺负面口碑扩散风险;同时统计长期差评高频词,反向优化产品做工、包装、发货时效。

场景 2:竞品深度调研分析

批量添加多款竞品商品 ID,长期沉淀竞品全量用户反馈,对比自身与竞品的用户痛点差异,找到差异化产品优化方向,用于新品研发、详情页卖点调整。

场景 3:市场舆情复盘

按月导出历史评论数据,分析不同时间段口碑波动,结合活动大促节点,判断活动对用户体验、商品评价的影响,优化后续营销方案。

六、避坑优化小贴士

  1. 监控间隔设置:普通日常监控建议 10–15 分钟一轮;大促流量高峰期可缩短至 5 分钟,兼顾实时性与稳定性;

  2. 存储方案选择:商品数量少于 10 款、评论总量 10 万条以内使用 CSV 即可;长期大规模监控建议替换为 SQLite/MySQL 数据库;

  3. 风控优化:工具后台自带访问限流策略,代码内已增加分页休眠,无需额外搭建代理池,避免频繁访问限制;

  4. 情感模型升级:SnowNLP 适合轻量快速分析,若需要更高精准度可替换第三方大模型文本识别能力,优化评价分类准确率;

  5. 告警拓展:可在差评预警代码段增加 webhook 请求,将差评内容自动推送至企业微信群、钉钉群,实现团队协同处理。

七、总结

借助 OpenClaw 数据能力,我们避开了传统爬虫频繁维护、逆向失效、风控拦截等一系列难题,仅用几十行 Python 代码就能搭建一套完整的商品评论监控与数据分析体系。整套方案轻量化、低成本,个人开发者、电商运营、产品调研都能快速上手落地。

从定时抓取新增评论、自动存储沉淀、情感自动分类,到痛点关键词统计、口碑可视化分析,全流程自动化完成,把人工重复翻阅评论的时间释放出来,聚焦数据背后的业务优化决策,是电商用户反馈分析性价比极高的落地方案。

后续还可以基于这套代码拓展更多功能:评论图片自动下载归档、多维度评分趋势折线图、按商品规格拆分评价数据、月度口碑自动生成简报文档等。


少长咸集

群贤毕至

访客