前言
做电商运营、产品、市场调研的朋友基本都有同一个痛点:想要持续掌握商品真实用户口碑,只能每天手动打开商品页面翻评论,几十上百款商品同步监控时,人工整理、统计、筛选差评耗时巨大,错过负面反馈还会直接影响转化与店铺权重。
之前尝试过浏览器自动化工具、本地模拟浏览采集,要么频繁触发平台风控限制,要么字段缺失拿不到晒图、追评、视频、规格等完整信息,数据杂乱难以二次分析。偶然接触到一款轻量化数据采集工具 Open Claw,仅需简单配置就能稳定批量拉取全维度用户评价,搭配 Python 实现定时监控、数据清洗、情感词频分析,整套流程不用复杂部署,普通笔记本、轻量云服务器都能 7×24 小时自动运行,下面把完整落地流程、可直接复制运行的代码分享给大家。
一、整体方案架构
整套系统分为三层,全程无复杂分布式、无环境门槛:
定时数据同步层:借助 Open Claw 配置商品任务,输入商品编号即可批量拉取综合 / 最新排序评价,自动覆盖评论正文、评价时间、买家昵称、购买规格、晒图、追评、视频素材等全量字段,支持缓存加速,减少重复请求耗时;
数据清洗持久层:Python 脚本自动过滤系统默认好评、空白无效内容、重复评价,统一时间格式,将结构化数据存入本地 CSV,也可无缝对接 MySQL、飞书多维表;
口碑智能分析层:基于分词工具拆分评论文本,区分正向 / 负向反馈,统计差评高频痛点词,生成好评 / 差评词云、情感分布饼图,自动输出商品口碑简报。
工具优势对比
稳定性强:规避平台页面动态渲染、反爬拦截问题,无需维护代理池、Cookie;
字段完整:原生支持抓取追加评价、买家实拍图、商品短视频、SKU 规格信息,普通浏览器采集很难一次性获取;
灵活调度:支持分页循环采集、定时轮询,新增评论实时同步,实现口碑 7×24 小时监控;
多格式输出:原始数据可直接转为 JSON、表格文本,适配各类数据分析脚本。
二、环境前置准备
1. Python 依赖库安装
新建项目文件夹,执行命令安装所需第三方包:
2. Open Claw 基础配置
注册登录后台,创建数据采集任务,录入需要监控的商品编号;
生成专属访问凭证与任务访问地址(后文代码中DATA_SOURCE_URL替换为自己生成的链接);
可自定义缓存开关、输出文本语言、分页采集数量,默认开启缓存提升重复采集速度。
三、完整可运行代码
模块 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 采集任务
后台新建商品采集任务,填入需要监控的商品 ID;
调整采集参数:缓存开启yes、排序选择1(最新)用于监控新增差评;
复制生成的专属访问链接,替换代码中DATA_SOURCE_URL;
支持多商品批量创建任务,循环调用脚本实现多款商品同步监控。
步骤 2:数据采集与增量存储
运行第一段采集脚本,首次执行会自动创建goods_review_data.csv,所有评价完整入库;取消代码中while True注释、设置time.sleep(3600)即可实现每小时自动拉取新评价,无需人工重复操作。 采集到的结构化字段包含:
步骤 3:口碑数据分析与可视化
运行第二段分析脚本,自动输出两项可视化文件:
review_wordcloud.png:用户高频关键词词云,快速抓取用户核心关注点(面料、尺寸、物流、做工等);
sentiment_pie.png:正负评价占比饼图,直观判断商品整体口碑; 控制台同步打印 TOP20 高频词汇、正负评价数量,可直接用于运营复盘、产品优化报告。
五、业务场景落地价值
差评实时预警:定时轮询抓取最新评价,脚本可拓展对接企业微信 / 飞书推送负面评价,2 小时内响应用户投诉,降低店铺纠纷;
竞品调研:批量采集同行同款商品评价,提取竞品痛点,优化自身产品文案、尺码、材质;
产品迭代依据:从高频关键词挖掘用户需求,比如大量评价提及 “尺码偏小”,可调整商品详情尺码表、修改版型;
投放素材优化:提取好评高频词作为直通车、短视频宣传关键词,提升转化点击率;
店铺数据沉淀:长期积累评价数据,按月统计口碑变化,直观看到产品优化后的用户反馈提升。
六、常见问题优化方案
采集速度慢:开启缓存参数cache=yes,减少重复请求平台数据源,采集效率提升 60% 以上;
文本乱码:CSV 文件写入统一使用encoding="utf-8-sig",Windows、Mac 打开表格无中文乱码;
词云无文字:修改代码中font_path字体路径,Windows 使用 simhei.ttf,Mac 用 PingFang.ttc;
数据重复堆积:代码内置根据评论 ID 自动去重逻辑,每次采集仅新增未收录评价,文件不会无限膨胀;
大量商品监控:循环遍历多任务链接,配合轻量云服务器 7×24 小时挂机运行,一次性监控几十款商品无压力。
七、总结
传统人工整理评价的方式效率极低,而 Open Claw 搭配 Python 搭建的自动化口碑监控体系,零复杂开发成本,兼顾采集稳定性与数据完整性。整套流程从数据自动拉取、清洗存储到情感可视化分析一站式完成,运营、产品、市场人员不用学习复杂爬虫、分布式技术,复制代码修改少量配置即可落地,长期使用能大幅降低用户反馈调研成本,快速从海量评论中挖掘业务优化机会。