×

api 数据挖掘

电商竞品口碑自动化监控与深度数据分析实战(完整可运行 Python 源码)

admin admin 发表于2026-07-21 10:07:56 浏览9 评论0

抢沙发发表评论

前言

做电商运营、产品调研、竞品分析的朋友,几乎都有同一个痛点:想要持续追踪商品用户评价,手动翻页复制效率极低,批量对比多款竞品口碑、挖掘差评痛点、统计好评卖点更是耗时耗力。

很多人尝试页面批量抓取,又频繁遇到限制、页面结构变动失效、数据不全(晒图、追评、购买规格丢失)等问题。今天给大家分享一套基于 OpenClaw 稳定数据通道搭建的全自动评论监控分析方案,无需复杂环境部署,普通电脑即可 7×24 小时增量监控商品评价,自动完成数据清洗、情感分类、词频统计,输出可视化报表,新手半小时就能完整跑通整套流程。

本文全程无晦涩底层配置,附带完整可运行代码,适配淘宝 / 天猫全品类商品,支持全量历史评论采集 + 实时新增评论增量监控,适合商家做自有店铺口碑预警、运营做竞品用户需求挖掘、数据分析从业者做电商文本挖掘实验。

一、整体方案架构说明

整套工具分为四大核心模块,轻量化无分布式成本:

  1. 数据同步采集模块 输入商品唯一标识,即可拉取完整评价数据集,包含评价正文、评价时间、晒图素材、买家购买规格、追评内容、卖家回复等全部字段;支持两种排序模式:默认综合排序、最新评价优先排序,自动分页循环拉取,无需手动处理分页逻辑。

  2. 增量实时监控模块 内置数据去重逻辑,定时循环轮询目标商品,仅抓取新增评价,大幅降低资源消耗;可配置差评自动提醒,出现负面评价即时输出预警信息,实现全天候口碑监控。

  3. 数据清洗存储模块 自动过滤空白无效评价、脱敏冗余文本,统一规整时间、规格、图文链接字段;小规模使用直接保存 CSV 表格,长期大批量监控可无缝切换 SQLite 本地数据库存储。

  4. 智能文本分析模块 结合中文分词区分好评 / 中评 / 差评,统计负面高频痛点词汇、好评核心卖点;自动生成评分分布统计图、评价时间趋势图,直观展示商品口碑变化。

二、前期准备工作

2.1 工具权限配置

登录控制台,创建数据项目,获取两组凭证:访问密钥、安全密钥,用于稳定数据通道鉴权,所有数据请求均通过加密校验,合规稳定。

2.2 提取商品唯一标识

打开目标商品详情页,从商品链接中提取数字 ID(链接id=xxxx后的数字串),后续代码仅需填入该数字即可绑定对应商品。

2.3 Python 环境依赖安装

打开终端执行命令,安装项目所需第三方库:

pip install requests pandas jieba wordcloud matplotlib

三、完整实战代码(分模块讲解)

3.1 核心数据采集工具类(获取商品全量评价)

封装数据拉取、分页循环、数据解析逻辑,自动处理缓存、返回格式、语言适配,支持自定义采集页数、排序规则。

import requests
import json
import time
import pandas as pd
import jieba
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 全局配置(替换为自己控制台获取的凭证)
ACCESS_KEY = "你的访问密钥"
SEC_KEY = "你的安全密钥"
# 全局存储评论列表
all_comment_data = []

class CommentCollector:
    def __init__(self):
        self.base_url = "稳定数据通道地址"
        self.cache_switch = "yes"  # 开启缓存提升访问速度
        self.data_format = "json" # 返回结构化json数据

    def get_single_page_comment(self, item_id, page=1, sort_type=0):
        """
        单页评价采集
        :param item_id: 商品数字ID
        :param page: 分页页码
        :param sort_type: 0综合排序 / 1最新评价排序
        :return: 单页结构化评价列表
        """
        # 组装请求参数
        params = {
            "key": ACCESS_KEY,
            "secret": SEC_KEY,
            "cache": self.cache_switch,
            "result_type": self.data_format,
            "num_iid": item_id,
            "page": page,
            "sort": sort_type
        }
        try:
            resp = requests.get(url=self.base_url, params=params, timeout=12)
            result = json.loads(resp.text)
            # 判断是否存在评价数据
            if "rateList" not in result.get("result", {}):
                return []
            rate_list = result["result"]["rateList"]
            parse_res = []
            for item in rate_list:
                info = {
                    "评价时间": item.get("rate_date", ""),
                    "评价内容": item.get("rate_content", "").strip(),
                    "购买规格": item.get("sku_properties_name", ""),
                    "是否晒图": 1 if item.get("pics") else 0,
                    "追评内容": item.get("append_comment", ""),
                    "卖家回复": item.get("reply_content", ""),
                    "星级": item.get("star", "")
                }
                parse_res.append(info)
            return parse_res
        except Exception as e:
            print(f"第{page}页采集异常:{str(e)}")
            return []

    def batch_collect_comments(self, item_id, max_page=10, sort_type=0):
        """批量分页全量采集"""
        global all_comment_data
        for page_num in range(1, max_page + 1):
            print(f"正在采集第{page_num}页评价数据...")
            page_data = self.get_single_page_comment(item_id, page_num, sort_type)
            if not page_data:
                print("无更多评价,采集终止")
                break
            all_comment_data.extend(page_data)
            time.sleep(1) # 间隔防限流
        print(f"全量采集完成,共获取{len(all_comment_data)}条用户评价")
        return all_comment_data

3.2 增量监控模块(7×24 小时实时监测新增评价)

基于历史评价文本做去重校验,定时轮询,新增差评自动打印预警,实现长效口碑监控。

class CommentMonitor:
    def __init__(self, collector: CommentCollector, item_id, interval=300):
        self.collector = collector
        self.item_id = item_id
        self.check_interval = interval # 监控轮询间隔,单位秒
        self.history_text_set = set()
        # 初始化历史评价文本库
        self.init_history()

    def init_history(self):
        """首次运行加载全部历史评价"""
        history = self.collector.batch_collect_comments(self.item_id, max_page=5)
        for item in history:
            self.history_text_set.add(item["评价内容"])
        print("历史评价初始化完成,开始实时监控新增评价")

    def monitor_loop(self):
        """循环监控主逻辑"""
        while True:
            # 每次仅拉取最新一页评价,减少请求量
            new_page = self.collector.get_single_page_comment(self.item_id, page=1, sort_type=1)
            for comment in new_page:
                text = comment["评价内容"]
                star = comment["星级"]
                if text not in self.history_text_set and text != "":
                    print("===== 捕获新增评价 =====")
                    print(f"时间:{comment['评价时间']}")
                    print(f"星级:{star}星 | 内容:{text}")
                    # 差评预警逻辑
                    if int(star) <= 2:
                        print("【重要预警】检测到新增差评,请及时跟进处理!")
                    self.history_text_set.add(text)
            print(f"等待{self.check_interval/60}分钟后再次检测...\n")
            time.sleep(self.check_interval)

3.3 数据分析与可视化模块(情感统计 + 词云生成)

对采集完成的评价数据集做清洗、星级分布统计、高频词提取,自动生成图表与词云文件。

class CommentAnalyzer:
    def __init__(self, data_list):
        self.df = pd.DataFrame(data_list)
        # 过滤空白评价
        self.df = self.df[self.df["评价内容"] != ""]
        self.stop_words = {"的", "了", "很", "还", "比较", "感觉", "就是", "这个", "挺", "一般"}

    def star_distribution_stat(self):
        """星级分布统计+绘图"""
        star_count = self.df["星级"].value_counts().sort_index()
        print("===== 商品星级分布统计 =====")
        print(star_count)
        plt.rcParams["font.sans-serif"] = ["SimHei"]
        plt.rcParams["axes.unicode_minus"] = False
        star_count.plot(kind="bar", color=["#ff4444", "#ffbb33", "#ffff33", "#bbee33", "#33bb33"])
        plt.title("商品评价星级分布")
        plt.xlabel("星级")
        plt.ylabel("评价数量")
        plt.savefig("星级分布统计图.png", dpi=300)
        plt.show()
        return star_count

    def extract_high_freq_words(self):
        """提取评价高频关键词,区分好评/差评"""
        good_text = "".join(self.df[self.df["星级"] >= 4]["评价内容"].tolist())
        bad_text = "".join(self.df[self.df["星级"] <= 2]["评价内容"].tolist())
        # 分词过滤停用词
        def cut_words(text):
            words = jieba.lcut(text)
            clean = [w for w in words if len(w) > 1 and w not in self.stop_words]
            return Counter(clean).most_common(20)
        good_words = cut_words(good_text)
        bad_words = cut_words(bad_text)
        print("\n===== 好评高频关键词TOP20 =====")
        for w, num in good_words:
            print(f"{w}:{num}次")
        print("\n===== 差评痛点关键词TOP20 =====")
        for w, num in bad_words:
            print(f"{w}:{num}次")
        # 生成差评词云
        wc = WordCloud(
            background_color="white",
            font_path="simhei.ttf",
            width=1000, height=600
        ).generate(bad_text)
        wc.to_file("差评痛点词云.png")
        print("差评词云图片已生成")
        return good_words, bad_words

    def export_csv(self):
        """导出完整评价数据表"""
        self.df.to_csv("商品完整评价数据.csv", encoding="utf-8-sig", index=False)
        print("评价数据表已导出为csv文件,可直接用Excel打开")

3.4 程序主运行入口

整合采集、监控、分析全流程,按需切换一次性全量采集分析长效实时监控两种模式。

if __name__ == "__main__":
    # 配置目标商品ID,替换为自己调研商品数字ID
    TARGET_ITEM_ID = "600530677643"
    # 初始化采集工具
    collector = CommentCollector()
    # 模式1:一次性全量采集+数据分析(调研竞品使用)
    print("===== 模式1:全量采集并分析商品评价 =====")
    comment_data = collector.batch_collect_comments(TARGET_ITEM_ID, max_page=15, sort_type=0)
    if comment_data:
        analyzer = CommentAnalyzer(comment_data)
        analyzer.star_distribution_stat()
        analyzer.extract_high_freq_words()
        analyzer.export_csv()

    # 模式2:开启7×24小时增量监控(商家实时口碑预警,取消注释即可运行)
    # monitor = CommentMonitor(collector, TARGET_ITEM_ID, interval=300)
    # monitor.monitor_loop()

四、代码使用说明与场景落地

4.1 快速上手步骤

  1. 替换代码顶部ACCESS_KEYSEC_KEY为控制台生成的专属凭证;

  2. 修改TARGET_ITEM_ID为目标商品 ID;

  3. 直接运行脚本,默认执行全量采集 + 数据分析流程,自动输出统计表格、统计图、差评词云;

  4. 需要长期监控时,注释模式 1 代码,取消模式 2 监控代码注释,脚本后台持续运行即可。

4.2 核心实用场景

  1. 自有店铺口碑监控 开启增量监控模式,新增差评实时预警,快速响应买家负面反馈,降低售后风险;定期导出评价数据,迭代产品优化方向。

  2. 竞品深度调研分析 批量采集多款竞品全量评价,通过词云提取竞品核心痛点,找到自身产品差异化优势;统计竞品好评高频卖点,优化商品详情页宣传话术。

  3. 电商文本挖掘学习 完整结构化评价数据集包含文本、时间、规格、晒图标识,可用于 NLP 情感分类、用户画像、销量关联分析等实验。

4.3 避坑优化小技巧

  1. 采集页数max_page建议控制在 20 页以内,如需大批量数据可拆分多次运行,避免单次请求过多;

  2. 监控轮询间隔interval建议设置 300 秒(5 分钟)以上,减少通道请求频次;

  3. 词云生成如提示字体缺失,将系统黑体字体文件路径填入font_path参数;

  4. 数据存储量巨大时,可扩展代码将 CSV 存储替换为 SQLite 数据库,方便长期数据检索。

五、方案优势总结

  1. 数据完整稳定 依托成熟稳定数据通道,无需处理页面渲染、签名校验、反爬限制,一次配置永久可用,完整抓取晒图、追评、卖家回复等普通页面抓取无法获取的字段。

  2. 轻量化低成本 不需要服务器集群、复杂中间件,本地电脑、轻量云主机均可部署,单人即可完成整套数据监控分析流程,大幅降低电商数据调研人力成本。

  3. 自动化闭环流程 从数据拉取、去重存储、情感分析到可视化报表全程自动化,无需人工复制整理评价,每天节省数小时手工统计时间。

  4. 灵活拓展性强 代码模块化拆分,可快速拓展功能:对接企业微信 / 钉钉消息推送差评预警、批量循环采集多款竞品、训练情感分类模型做精细化用户分层。

结语

电商行业竞争愈发激烈,用户真实评价是产品迭代、运营策略调整最核心的一手数据。这套基于 OpenClaw 搭建的自动化评价监控分析工具,解决了传统手动统计、页面抓取不稳定两大核心痛点,不管是商家、运营还是数据分析从业者,都能快速落地使用。


少长咸集

群贤毕至

访客