电商评论自动化监控 + 文本分析落地教程,一套脚本搞定竞品舆情实时追踪
前言
做电商运营、产品调研、竞品分析的朋友应该都有同一个痛点:想持续监控自家和竞品商品的用户真实反馈,手动翻页复制评价效率极低,每日几十款商品轮询几乎要耗费半天人力;拿到一堆零散评论文本后,又要人工筛选好评、差评、高频吐槽点,很难快速提炼产品优化方向。
过去试过原生页面批量采集,频繁触发平台访问限制,数据漏采、拦截报错层出不穷;自建采集框架又要处理账号、延时、分页、文本清洗全套逻辑,开发周期长、维护成本高。
今天分享一套成熟落地方案,借助 OpenClaw 数据采集能力,搭配 Python 轻量脚本实现定时自动拉取商品全量评价、增量监控新增评论、文本情感统计、高频词分析全流程,无需复杂环境搭建,新手复制代码即可运行,跨境、国内电商店铺通用。
一、方案整体思路
- 基础数据获取:依托 OpenClaw 封装成熟的商品评论获取能力,一键传入商品编号即可返回全部评价内容(评分、评价正文、晒图、追评、评价时间、买家标签),自动分页无需手动循环页码;
- 增量监控机制:本地存储已采集评论 ID,定时任务执行时只拉取新增内容,避免重复数据占用存储;
- 数据持久化:将原始评价存入 CSV 文件,方便 Excel 可视化查看;
- 自动化分析模块:内置分词、情感打分、差评关键词统计,自动输出分析报表;
- 预警拓展:可搭配邮件 / 企业微信推送负面评价告警,实现舆情实时监控。
二、前置环境准备
1. 工具准备
- OpenClaw 账号(注册后获取专属访问凭证,用于脚本鉴权)
- Python 3.8 及以上版本
- 依赖库安装,执行以下命令:
pip install requests pandas jieba wordcloud
2. 素材准备
目标商品 ID 清单,可批量录入 txt 文档,脚本支持批量
循环多款商品同步监控。
三、完整可运行代码(分三大模块)
模块 1:核心数据拉取工具(基于 OpenClaw 能力获取商品评价)
import requests
import time
import pandas as pd
import jieba
from collections import Counter
# =====================配置区(自行修改)=====================
# OpenClaw个人凭证
ACCESS_TOKEN = "你的专属凭证"
# 需要监控的商品ID列表
ITEM_ID_LIST = ["723456123456", "723456123789"]
# 监控轮询间隔,单位秒,建议3600(1小时)
LOOP_INTERVAL = 3600
# 历史数据存储文件
SAVE_FILE = "shop_comment_data.csv"
# 已采集评论ID缓存,去重使用
record_id_set = set()
# ==========================================================
def get_item_comments(item_id):
"""
获取单款商品全部评价,自动分页
"""
all_comments = []
page = 1
while True:
# 构造请求参数
params = {
"token": ACCESS_TOKEN,
"item_id": item_id,
"page": page,
"page_size": 50
}
# 请求数据
resp = requests.get("https://data-claw-service.com/comment/query", params=params, timeout=30)
res_json = resp.json()
# 判断返回状态
if res_json.get("code") != 200:
print(f"商品{item_id} 第{page}页获取失败:{res_json.get('msg')}")
break
comment_list = res_json.get("data", {}).get("list", [])
if not comment_list:
print(f"商品{item_id} 评价数据全部拉取完成,共{len(all_comments)}条")
break
# 过滤已采集旧数据,只保留新增评论
new_comment = []
for item in comment_list:
cid = item.get("comment_id")
if cid not in record_id_set:
record_id_set.add(cid)
new_comment.append(item)
all_comments.extend(new_comment)
page += 1
time.sleep(1)
return all_comments
# 模块2:数据清洗与本地存储
def save_comment_data(comment_list):
if not comment_list:
return
df_new = pd.DataFrame(comment_list)
# 判断本地文件是否存在,追加写入
try:
df_old = pd.read_csv(SAVE_FILE, encoding="utf-8-sig")
df_total = pd.concat([df_old, df_new], ignore_index=True)
except FileNotFoundError:
df_total = df_new
# 去重保存
df_total.drop_duplicates(subset=["comment_id"], keep="last", inplace=True)
df_total.to_csv(SAVE_FILE, index=False, encoding="utf-8-sig")
print(f"新增{len(df_new)}条评价,当前总数据量:{len(df_total)}")
# 模块3:评论数据分析(情感、高频词统计)
def comment_analysis():
df = pd.read_csv(SAVE_FILE, encoding="utf-8-sig")
# 1. 基础评分统计
score_stats = df["score"].value_counts().sort_index()
print("=====商品评分分布统计=====")
print(score_stats)
# 区分好评差评(4-5星好评,1-2星差评,3星中性)
good = len(df[df["score"] >= 4])
bad = len(df[df["score"] <= 2])
mid = len(df[df["score"] == 3])
print(f"好评数量:{good} 差评数量:{bad} 中性评价:{mid}")
# 2. 差评文本分词,提取高频吐槽词
bad_text = "".join(df[df["score"] <= 2]["content"].astype(str))
stop_words = {"的", "了", "很", "有点", "还", "就是", "但是", "一般", "感觉"}
words = jieba.lcut(bad_text)
filter_words = [w for w in words if len(w) > 1 and w not in stop_words]
word_count = Counter(filter_words)
print("\n=====差评高频关键词Top20=====")
for word, cnt in word_count.most_common(20):
print(f"{word}:{cnt}次")
# 导出分析报表
analysis_result = pd.DataFrame(word_count.most_common(30), columns=["关键词", "出现次数"])
analysis_result.to_csv("comment_word_analysis.csv", index=False, encoding="utf-8-sig")
# 定时循环监控主程序
def main():
global record_id_set
# 加载历史评论ID,用于增量判断
try:
df_history = pd.read_csv(SAVE_FILE, encoding="utf-8-sig")
record_id_set = set(df_history["comment_id"].tolist())
print(f"加载历史采集记录,已有{len(record_id_set)}条历史评价")
except FileNotFoundError:
print("暂无历史数据,首次全量采集")
# 循环监控
while True:
total_new = []
for goods_id in ITEM_ID_LIST:
print(f"\n开始采集商品:{goods_id}")
new_data = get_item_comments(goods_id)
total_new.extend(new_data)
# 保存新增数据并分析
if total_new:
save_comment_data(total_new)
comment_analysis()
else:
print("本轮无新增评价,等待下一轮监控...")
print(f"等待{LOOP_INTERVAL/60}分钟后再次采集")
time.sleep(LOOP_INTERVAL)
if __name__ == "__main__":
main()
四、代码核心功能拆解说明
1. 增量采集,避免重复采集浪费资源
脚本启动时自动读取本地历史文件,缓存所有已采集评论唯一标识;每次拉取数据时自动过滤历史内容,仅保存当日 / 当轮新增评价,长期运行数据量不会冗余。
2. 自动分页,无需手动处理分页逻辑
OpenClaw 底层已封装分页逻辑,代码内仅需循环页码,工具自动处理平台分页限制、访问延时,不会出现漏采、中断问题,单商品上万条评价也能完整拉取。
3. 一站式数据分析,直接输出运营可用结论
- 自动统计五星、四星、三星、两星、一星评价占比,直观判断整体口碑;
- 单独提取所有差评文本,使用 jieba 分词过滤无意义助词,统计用户吐槽高频词汇,快速定位产品缺陷(如 “物流慢”“材质差”“尺寸偏小” 等);
- 原始评价数据、关键词分析结果分别导出两份 CSV 表格,可直接导入 Excel 做可视化图表。
4. 7×24 小时定时监控,实现舆情预警
修改LOOP_INTERVAL参数可自定义采集频率:
- 竞品重点监控:300 秒(5 分钟)一轮,第一时间捕捉负面评价;
- 常规店铺监控:3600 秒(1 小时)一轮,平衡采集速度与资源消耗。
五、实操落地优化技巧
1. 多商品批量监控
把ITEM_ID_LIST写入外部 txt 文档,通过读取文件循环商品,一次性监控几十上百款竞品,无需手动修改代码。
# 批量读取商品ID示例
with open("goods_id.txt", "r", encoding="utf-8") as f:
ITEM_ID_LIST = [line.strip() for line in f if line.strip()]
2. 负面评价实时推送告警
新增企业微信 / 钉钉机器人推送函数,检测到新增差评自动推送消息,运营不用每天查看表格:
def send_warning(text):
robot_url = "你的机器人webhook地址"
data = {"msgtype": "text", "text": {"content": text}}
requests.post(robot_url, json=data)
# 在save_comment_data函数内新增差评判断
bad_new = [i for i in new_comment if i.get("score") <= 2]
if bad_new:
send_warning(f"检测到{len(bad_new)}条新增差评,请及时查看!")
3. 适配跨境多语言商品
OpenClaw 支持海外站点商品评价拉取,只需调整请求参数区域标识,脚本无需大幅改动,搭配翻译库可实现多语言评论统一解析。
六、对比传统采集方案优势
- 规避平台访问限制:原生爬虫频繁请求极易被风控拦截,OpenClaw 自带分布式访问策略,长期稳定采集;
- 降低开发维护成本:不用处理 cookie、签名、反爬校验、验证码等复杂底层逻辑,核心业务代码仅几十行;
- 数据维度完整:自动同步评价配图、追评、买家规格标签、评价时间等运营关键信息,普通爬虫很难一次性完整获取;
- 支持企业级规模化:支持上万款商品长期轮询监控,数据稳定输出,适合电商团队、市场调研工作室批量使用。
七、常见问题排查
- 数据返回为空:检查凭证是否填写正确、商品 ID 是否有效,部分下架商品无法获取评价;
- 编码乱码:保存文件统一使用
utf-8-sig编码,Excel 打开不会出现中文乱码; - 采集速度慢:调大
page_size单次拉取条数,或延长单商品间隔时间,避免请求拥挤; - 分词无有效关键词:自行扩充停用词列表,过滤更多无意义语气词,提升分析精准度。
总结
这套基于 OpenClaw 搭建的自动化评论监控分析方案,完美解决电商人长期以来手动整理评价、滞后发现舆情的痛点。代码轻量化、可二次拓展,不管是个人卖家做竞品调研,还是企业运营团队做全店铺口碑监控都能直接落地。
长期运行后,沉淀的历史评价数据还能用于产品迭代、竞品差异化分析、售前话术优化,把零散用户反馈转化为可落地的业务决策依据,大幅降低数据收集与分析的人力成本。
更多推荐




所有评论(0)