×

api 数据挖掘

电商商品口碑自动化监控与文本分析完整实操方案(附可运行 Python 代码)

admin admin 发表于2026-07-14 17:27:54 浏览10 评论0

抢沙发发表评论

前言

做电商运营、产品、市场调研的朋友基本都有同一个痛点:想要持续掌握商品真实用户口碑,只能每天手动打开商品页面翻评论,几十上百款商品同步监控时,人工整理、统计、筛选差评耗时巨大,错过负面反馈还会直接影响转化与店铺权重。

之前尝试过浏览器自动化工具、本地模拟浏览采集,要么频繁触发平台风控限制,要么字段缺失拿不到晒图、追评、视频、规格等完整信息,数据杂乱难以二次分析。偶然接触到一款轻量化数据采集工具 Open Claw,仅需简单配置就能稳定批量拉取全维度用户评价,搭配 Python 实现定时监控、数据清洗、情感词频分析,整套流程不用复杂部署,普通笔记本、轻量云服务器都能 7×24 小时自动运行,下面把完整落地流程、可直接复制运行的代码分享给大家。

一、整体方案架构

整套系统分为三层,全程无复杂分布式、无环境门槛:

  1. 定时数据同步层:借助 Open Claw 配置商品任务,输入商品编号即可批量拉取综合 / 最新排序评价,自动覆盖评论正文、评价时间、买家昵称、购买规格、晒图、追评、视频素材等全量字段,支持缓存加速,减少重复请求耗时;

  2. 数据清洗持久层:Python 脚本自动过滤系统默认好评、空白无效内容、重复评价,统一时间格式,将结构化数据存入本地 CSV,也可无缝对接 MySQL、飞书多维表;

  3. 口碑智能分析层:基于分词工具拆分评论文本,区分正向 / 负向反馈,统计差评高频痛点词,生成好评 / 差评词云、情感分布饼图,自动输出商品口碑简报。

工具优势对比

  1. 稳定性强:规避平台页面动态渲染、反爬拦截问题,无需维护代理池、Cookie;

  2. 字段完整:原生支持抓取追加评价、买家实拍图、商品短视频、SKU 规格信息,普通浏览器采集很难一次性获取;

  3. 灵活调度:支持分页循环采集、定时轮询,新增评论实时同步,实现口碑 7×24 小时监控;

  4. 多格式输出:原始数据可直接转为 JSON、表格文本,适配各类数据分析脚本。

二、环境前置准备

1. Python 依赖库安装

新建项目文件夹,执行命令安装所需第三方包:

pip install requests pandas jieba wordcloud matplotlib

2. Open Claw 基础配置

  1. 注册登录后台,创建数据采集任务,录入需要监控的商品编号;

  2. 生成专属访问凭证与任务访问地址(后文代码中DATA_SOURCE_URL替换为自己生成的链接);

  3. 可自定义缓存开关、输出文本语言、分页采集数量,默认开启缓存提升重复采集速度。

三、完整可运行代码

模块 1:定时拉取商品评价 + 数据清洗存储脚本

功能:循环分页采集全量评价,过滤无效数据,增量保存本地文件,支持定时循环实现实时监控

# coding:utf-8
import requests
import pandas as pd
import time
import re
import os

# =====================基础配置区(自行修改)=====================
# Open Claw生成的任务访问链接
DATA_SOURCE_URL = "https://xxx.xxx/task/review?goods_id=600530677643"
# 本地数据存储文件
SAVE_CSV = "goods_review_data.csv"
# 每次采集间隔秒数,防止高频请求
SLEEP_SECONDS = 3
# 是否开启缓存加速,yes/no
CACHE_SWITCH = "yes"
# 采集排序:0综合排序,1最新排序(监控新增评论选1)
SORT_TYPE = 1
# 最大采集页数
MAX_PAGE = 10
# ==============================================================

# 清洗文本:去除换行、空格、特殊符号
def clean_text(text):
    if not text:
        return ""
    text = re.sub(r"\s+", "", str(text))
    text = re.sub(r"[^\u4e00-\u9fa5a-zA-Z0-9,。!?、]", "", text)
    return text

# 请求单页评价数据
def get_review_page(page_num):
    headers = {
        "Accept-Encoding": "gzip",
        "Connection": "close"
    }
    params = {
        "cache": CACHE_SWITCH,
        "page": page_num,
        "sort": SORT_TYPE
    }
    try:
        resp = requests.get(DATA_SOURCE_URL, params=params, headers=headers, timeout=20)
        resp.raise_for_status()
        res_json = resp.json()
        # 状态判断:无数据/任务异常直接返回空列表
        if res_json.get("error_code") != "0000":
            print(f"第{page_num}页数据异常:{res_json.get('error_msg')}")
            return []
        return res_json.get("review_list", [])
    except Exception as e:
        print(f"第{page_num}页请求失败:{str(e)}")
        return []

# 解析单条评价结构化数据
def parse_review_item(item):
    data_dict = {
        "评论ID": item.get("rate_id", ""),
        "买家昵称": item.get("display_user_nick", ""),
        "评价正文": clean_text(item.get("rate_content", "")),
        "追加评价": clean_text(item.get("add_feedback", "")),
        "评价时间": item.get("rate_date", ""),
        "购买规格": item.get("auction_sku", ""),
        "晒图链接": ",".join(item.get("pics", [])) if item.get("pics") else "",
        "追评图片": ",".join(item.get("add_feedback_images", [])) if item.get("add_feedback_images") else "",
        "评价视频": item.get("video", ""),
        "视频封面": item.get("videoCover", "")
    }
    # 过滤空白无意义评价
    if len(data_dict["评价正文"]) < 2 and len(data_dict["追加评价"]) < 2:
        return None
    return data_dict

# 批量采集全页数据
def batch_crawl_all_review():
    all_review_data = []
    for page in range(1, MAX_PAGE + 1):
        print(f"正在采集第{page}页评价...")
        raw_list = get_review_page(page)
        if not raw_list:
            print("无更多评价数据,停止分页采集")
            break
        for item in raw_list:
            parse_data = parse_review_item(item)
            if parse_data:
                all_review_data.append(parse_data)
        time.sleep(SLEEP_SECONDS)
    return all_review_data

# 增量写入CSV,避免重复存储
def save_to_csv(data_list):
    if not data_list:
        print("本次无新增有效评价")
        return
    df_new = pd.DataFrame(data_list)
    # 判断本地文件是否存在,增量合并去重
    if os.path.exists(SAVE_CSV):
        df_old = pd.read_csv(SAVE_CSV, dtype=str)
        df_merge = pd.concat([df_old, df_new], ignore_index=True)
        df_merge = df_merge.drop_duplicates(subset=["评论ID"], keep="last")
        df_merge.to_csv(SAVE_CSV, index=False, encoding="utf-8-sig")
    else:
        df_new.to_csv(SAVE_CSV, index=False, encoding="utf-8-sig")
    print(f"成功存储{len(data_list)}条有效评价,文件路径:{SAVE_CSV}")

# 定时监控主循环(取消注释while True开启7×24小时轮询)
if __name__ == "__main__":
    # while True:
    review_data = batch_crawl_all_review()
    save_to_csv(review_data)
    # time.sleep(3600)  # 每小时自动采集一次,按需调整间隔

模块 2:评论情感分析 + 词云可视化脚本

功能:读取本地评价表格,拆分好评 / 差评,提取高频关键词,生成可视化词云、情感分布饼图

# coding:utf-8
import pandas as pd
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 停用词(过滤无意义词汇)
STOP_WORDS = {"很好", "不错", "满意", "还行", "一般", "收到", "发货", "物流", "包装", "客服", "推荐", "购买", "使用"}
CSV_FILE = "goods_review_data.csv"

# 合并所有评论文本
def get_all_comment_text():
    df = pd.read_csv(CSV_FILE, dtype=str)
    text_total = ""
    for idx, row in df.iterrows():
        text_total += row["评价正文"] + row["追加评价"]
    return text_total

# 分词+过滤停用词,统计高频词
def get_word_freq(top_n=20):
    full_text = get_all_comment_text()
    words = jieba.lcut(full_text)
    valid_words = [w for w in words if len(w) > 1 and w not in STOP_WORDS]
    word_count = Counter(valid_words)
    return word_count.most_common(top_n)

# 生成词云图
def generate_word_cloud():
    word_freq = get_word_freq(100)
    word_dict = dict(word_freq)
    wc = WordCloud(
        font_path="C:/Windows/Fonts/simhei.ttf",  # Windows黑体路径,Mac替换为对应字体
        width=1000, height=600,
        background_color="white",
        max_words=100
    )
    wc.generate_from_frequencies(word_dict)
    plt.figure(figsize=(12, 7))
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.title("商品评价关键词词云", fontsize=16)
    plt.savefig("review_wordcloud.png", dpi=300, bbox_inches="tight")
    plt.show()
    print("词云图片已保存为 review_wordcloud.png")

# 简易情感区分(根据负面关键词划分正负向)
def sentiment_statistics():
    negative_key = {"差", "不好", "掉色", "起球", "破损", "异味", "偏小", "偏大", "质量差", "退货", "瑕疵"}
    df = pd.read_csv(CSV_FILE, dtype=str)
    good_count = 0
    bad_count = 0
    total = len(df)
    for idx, row in df.iterrows():
        content = row["评价正文"] + row["追加评价"]
        if any(k in content for k in negative_key):
            bad_count += 1
        else:
            good_count += 1
    # 绘制情感分布饼图
    plt.figure(figsize=(8, 8))
    label = ["正向评价", "负面评价"]
    num = [good_count, bad_count]
    color = ["#66cc66", "#ff6666"]
    plt.pie(num, labels=label, colors=color, autopct="%1.2f%%", startangle=90)
    plt.title(f"商品口碑情感分布(总评价{total}条)")
    plt.savefig("sentiment_pie.png", dpi=300)
    plt.show()
    print(f"正向评价:{good_count}条,负面评价:{bad_count}条")
    print("TOP20高频用户关键词:", get_word_freq(20))

if __name__ == "__main__":
    sentiment_statistics()
    generate_word_cloud()

四、实操落地步骤详解

步骤 1:配置 Open Claw 采集任务

  1. 后台新建商品采集任务,填入需要监控的商品 ID;

  2. 调整采集参数:缓存开启yes、排序选择1(最新)用于监控新增差评;

  3. 复制生成的专属访问链接,替换代码中DATA_SOURCE_URL

  4. 支持多商品批量创建任务,循环调用脚本实现多款商品同步监控。

步骤 2:数据采集与增量存储

运行第一段采集脚本,首次执行会自动创建goods_review_data.csv,所有评价完整入库;取消代码中while True注释、设置time.sleep(3600)即可实现每小时自动拉取新评价,无需人工重复操作。 采集到的结构化字段包含:

  • 基础文本:评价正文、追加追评、买家昵称

  • 素材信息:晒图链接、追评图片、商品短视频地址

  • 商品属性:下单 SKU 规格、评价时间

  • 唯一标识:评论 ID(用于自动去重,避免重复统计)

步骤 3:口碑数据分析与可视化

运行第二段分析脚本,自动输出两项可视化文件:

  1. review_wordcloud.png:用户高频关键词词云,快速抓取用户核心关注点(面料、尺寸、物流、做工等);

  2. sentiment_pie.png:正负评价占比饼图,直观判断商品整体口碑; 控制台同步打印 TOP20 高频词汇、正负评价数量,可直接用于运营复盘、产品优化报告。

五、业务场景落地价值

  1. 差评实时预警:定时轮询抓取最新评价,脚本可拓展对接企业微信 / 飞书推送负面评价,2 小时内响应用户投诉,降低店铺纠纷;

  2. 竞品调研:批量采集同行同款商品评价,提取竞品痛点,优化自身产品文案、尺码、材质;

  3. 产品迭代依据:从高频关键词挖掘用户需求,比如大量评价提及 “尺码偏小”,可调整商品详情尺码表、修改版型;

  4. 投放素材优化:提取好评高频词作为直通车、短视频宣传关键词,提升转化点击率;

  5. 店铺数据沉淀:长期积累评价数据,按月统计口碑变化,直观看到产品优化后的用户反馈提升。

六、常见问题优化方案

  1. 采集速度慢:开启缓存参数cache=yes,减少重复请求平台数据源,采集效率提升 60% 以上;

  2. 文本乱码:CSV 文件写入统一使用encoding="utf-8-sig",Windows、Mac 打开表格无中文乱码;

  3. 词云无文字:修改代码中font_path字体路径,Windows 使用 simhei.ttf,Mac 用 PingFang.ttc;

  4. 数据重复堆积:代码内置根据评论 ID 自动去重逻辑,每次采集仅新增未收录评价,文件不会无限膨胀;

  5. 大量商品监控:循环遍历多任务链接,配合轻量云服务器 7×24 小时挂机运行,一次性监控几十款商品无压力。

七、总结

传统人工整理评价的方式效率极低,而 Open Claw 搭配 Python 搭建的自动化口碑监控体系,零复杂开发成本,兼顾采集稳定性与数据完整性。整套流程从数据自动拉取、清洗存储到情感可视化分析一站式完成,运营、产品、市场人员不用学习复杂爬虫、分布式技术,复制代码修改少量配置即可落地,长期使用能大幅降低用户反馈调研成本,快速从海量评论中挖掘业务优化机会。


少长咸集

群贤毕至

访客