当前位置: 首页 > news >正文

影刀RPA新手教程:电商评论挖掘完全指南——批量采集用户评论、情感分析与词云生成

影刀RPA新手教程:电商评论挖掘完全指南——批量采集用户评论、情感分析与词云生成

作者:林焱

一、认识影刀与安装配置

做电商最怕的不是差评,而是不知道用户为什么给差评。我刚开始做店铺运营时,每天手动翻评论做标注,翻到手酸也翻不完。直到用影刀RPA搭了一套评论自动采集+情感分析的流程,每天半小时就能跑完所有商品的评论分析。

影刀安装前,确认你的Windows系统是64位、内存至少8GB。下载安装包后双击运行,默认安装就行。安装完成后打开影刀编辑器,第一步去「工具」菜单安装Chrome浏览器扩展,第二步在「设置」里确认Python环境已启用。这两个配置缺一不可,我当时忘了开Python支持,后面写情感分析脚本一直报错,排查了一上午。

关于更多自动化实践分享,可访问 home.linyan.cloud 查看。

二、元素定位四合一:XPath+CSS+正则

电商评论区域的结构各异,淘宝、京东、拼多多的评论HTML结构完全不同。

淘宝评论XPath:

//div[contains(@class,'comment-item')]//div[contains(@class,'comment-content')]

京东评论CSS选择器:

div.comment-item div.comment-con

正则提取评论中的关键信息:

提取购买日期:(\d{4}-\d{2}-\d{2}|\d{4}年\d{1,2}月\d{1,2}日) 提取颜色规格:颜色[::]\s*(\S+)\s*规格[::]\s*(\S+) 提取追评标记:追评|追加|用了.*[天后]

影刀四合一定位:

{"淘宝评论定位":{"主_XPath":"//div[contains(@class,'comment-item')]","备选_CSS":"div.tb-rev-item","备选_属性":"data-spm-anchor-id","备选_文本":"***","分隔符模式":"每个评论块以用户头像为起点"}}

三、变量与数据类型

评论数据结构:

变量名:comment_record 类型:字典 值: { "商品ID": "100000123456", "商品名称": "XX品牌无线蓝牙耳机", "用户昵称": "匿***名", "评论内容": "音质不错,戴着也挺舒服的。用了三天来评价,续航大概6小时左右。", "评分": 5, "评论时间": "2025-06-20", "购买颜色": "白色", [video(video-8Pi1fQq0-1782841836964)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限!)] "购买规格": "标准版", "是否有追评": false, "追评内容": "", "点赞数": 12, "回复数": 2, "采集平台": "淘宝", "采集时间": "2025-06-24 14:30:00" }

情感分析结果字典:

值: { "评论内容": "音质不错", "情感标签": "正面", "情感得分": 0.85, "关键词": ["音质","不错"], "是否有购买意向": true }

数据表格设计:

评论ID商品用户评分内容情感得分关键词日期
001耳机匿A5音质好正面0.9音质06-20

四、流程控制

多商品轮询采集:

指令:循环 类型:ForEach 列表:product_id_list(从数据库或Excel读取) 循环体: 指令:打开网页 URL:https://detail.tmall.com/item.htm?id={当前商品ID} 指令:点击元素 元素:xpath=//a[contains(text(),'评价')] 指令:等待元素出现 元素:xpath=//div[contains(@class,'comment-container')] 超时:10000毫秒 // 执行评论翻页采集 指令:执行子流程_评论翻页采集 指令:随机等待 最短:3000毫秒 最长:10000毫秒 结束循环

评论翻页采集(带总页数判断):

指令:获取元素文本 元素:xpath=//span[contains(text(),'共')] 保存至:page_text 指令:正则提取 文本:page_text 正则:\d+ 保存至:total_pages 指令:For次数循环 起始:1 结束:total_pages 循环体: 指令:批量数据抓取 行元素://div[contains(@class,'comment-item')] 列: 评论内容:.//div[contains(@class,'comment-content')] 评分:.//div[contains(@class,'star')] 时间:.//span[contains(@class,'date')] 颜色:.//span[contains(@class,'sku')] 保存至:comment_data_table 指令:If条件判断 条件:当前页 < total_pages True: 指令:点击元素 元素:xpath=//a[contains(text(),'下一页')] 指令:随机等待 最短2000最长5000毫秒 结束循环

五、网页自动化实战

跨平台评论采集适配:

淘宝、京东、拼多多三个平台的评论页结构各不同,但可以用同一套框架适配:

流程参数: 平台类型:{从配置读取} 指令:Switch条件分支 分支:平台 == "淘宝" 指令:打开网页 URL=https://rate.taobao.com/... 分支:平台 == "京东" 指令:打开网页 URL=https://item.jd.com/{商品ID}.html#comment 分支:平台 == "拼多多" 指令:打开网页 URL=https://mobile.yangkeduo.com/goods_comments.html?goods_id={商品ID}

动态滚动加载评论:

这是我当时踩过的大坑——淘宝的评论不是一次性加载的,需要不断滚动才能看到更多评论:

指令:无限循环 循环体: 指令:获取当前评论数 保存至:count_before 指令:执行JS脚本 脚本: let commentBox = document.querySelector('.comment-list'); commentBox.scrollTop = commentBox.scrollHeight; 指令:等待 2000毫秒 指令:获取当前评论数 保存至:count_after 指令:If条件判断 条件:count_before == count_after True:退出循环 结束循环

六、数据处理

情感分析——Python协同核心代码:

指令:Python脚本 脚本内容: import jieba import collections # 基础情感词典 positive_words = { '好', '不错', '满意', '喜欢', '推荐', '棒', '赞', '优秀', '性价比高', '实惠', '舒服', '漂亮', '好看', '耐用', '值得', '好评', '完美', '惊喜', '方便', '实用', '精致', '正品' } negative_words = { '差', '不好', '不满意', '后悔', '不值', '垃圾', '坑', '难用', '失望', '差评', '粗糙', '味道不对', '坏了', '退货', '退款', '投诉', '假货', '劣质', '破损' } def analyze_sentiment(comment): words = set(jieba.lcut(comment)) pos_score = len(words & positive_words) neg_score = len(words & negative_words) if pos_score > neg_score: return ('正面', pos_score / (pos_score + neg_score + 1)) elif neg_score > pos_score: return ('负面', -neg_score / (pos_score + neg_score + 1)) else: return ('中性', 0.0) # 批量分析 results = [] for comment in raw_comments: label, score = analyze_sentiment(comment['content']) results.append({ '内容': comment['content'], '情感': label, '得分': score })

词云数据生成:

指令:Python脚本 脚本内容: import jieba from collections import Counter # 将所有评论合并 all_text = ' '.join([c['content'] for c in comments]) # 分词并过滤停用词 stopwords = {'的','了','是','我','有','在','也','就','都','和','很','还'} words = [w for w in jieba.cut(all_text) if len(w) > 1 and w not in stopwords] # 统计词频(Top50) word_freq = Counter(words).most_common(50) # 输出为可导入词云工具的格式 for word, freq in word_freq: print(f"{word}: {freq}")

七、鼠标键盘与图像操作

识别好评/差评图标:

有些平台的评分用图标(星星)展示而非数字:

指令:元素截图 元素:xpath=//div[contains(@class,'star-box')] 保存至:star_img.png 指令:图像匹配 模板图片:star_full.png(金黄色满星) 目标图片:star_img.png 匹配阈值:0.85 保存匹配数量至:star_count

下载评论中的图片附件:

指令:获取元素属性 元素:xpath=//div[contains(@class,'comment-img')]//img 属性名:src 保存至:image_urls(列表) 指令:循环 类型:ForEach 列表:image_urls 循环体: 指令:下载文件 URL:{当前图片URL} 保存路径:D:\评论图片\{商品ID}_{序号}.jpg 结束循环

八、进阶技能

评论去重与增量采集:

指令:Python脚本 脚本内容: # 用评论内容+时间的哈希做去重 import hashlib def dedup_comments(comments): seen = set() unique = [] for c in comments: dedup_key = hashlib.md5( (c['content'] + c['date']).encode('utf-8') ).hexdigest() if dedup_key not in seen: seen.add(dedup_key) unique.append(c) return unique # 增量模式:只保留新评论 old_keys = set(读取历史文件的去重键) new_comments = [c for c in current_comments if hashlib.md5((c['content']+c['date']).encode()).hexdigest() not in old_keys]

关键词预警机制:

指令:Python脚本 脚本内容: alert_keywords = ['差评','退货','投诉','假货','质量差','过敏','破损','客服差'] alerts = [] for comment in comments: for kw in alert_keywords: if kw in comment['content']: alerts.append({ '商品': comment['product'], '关键词': kw, '评论': comment['content'][:100] }) break # 如果有预警,发送通知 if alerts: 触发飞书通知(alerts)

九、平台实战——完整评论分析流程

某次帮一个护肤品店铺做评论分析,目标是找出用户最关注的产品属性。

流程步骤:

  1. 读取店铺商品列表(Excel),获取所有在售商品的ID

  2. 对每个商品采集最近500条评论(淘宝平台)

  3. 进行情感分析,分离正面/负面评论

  4. 分别对正面和负面评论做高频词提取

  5. 生成词云数据

  6. 输出分析报告

最终发现了几个关键洞察:正面评论高频词是"滋润"“不油腻”“吸收快”,负面评论高频词是"包装漏了"“过敏”“味道不好闻”。运营团队据此优化了包装设计和产品配方,次月差评率下降了40%。

十、系统联动

temu店群自动化报活动案例

飞书通知——差评实时预警:

指令:发送HTTP请求 URL:https://open.feishu.cn/open-apis/bot/v2/hook/{webhook_token} 方法:POST 请求体: { "msg_type": "post", "content": { "post": { "zh_cn": { "title": "差评预警 - {商品名称}", "content": [ [{"tag": "text", "text": "新增1条差评,内容:"}], [{"tag": "text", "text": "{评论内容}"}], [{"tag": "text", "text": "请及时处理!"}] ] } } } }

MySQL数据库写入:

指令:执行SQL 数据库:mysql://localhost:3306/ecommerce_db SQL: INSERT INTO product_reviews (product_id, platform, user_name, rating, content, sentiment, keywords, collect_time) VALUES (?, ?, ?, ?, ?, ?, ?, NOW()) 参数:[product_id, platform, user, rating, content, sentiment, keywords_json]

十一、工程化与规范

目录结构:

电商评论分析/ ├── 主流程_评论采集分析.flow ├── 子流程/ │ ├── 淘宝评论采集.flow │ ├── 京东评论采集.flow │ ├── 情感分析.flow │ └── 词云生成.flow ├── 词典/ │ ├── 正面词典.txt │ ├── 负面词典.txt │ └── 停用词表.txt ├── 数据/ │ ├── 原始评论/ │ └── 分析结果/ └── 配置/ └── 商品列表.xlsx

采集频率规范:

  • 爆款商品:每天采集1次
  • 普通商品:每3天采集1次
  • 长尾商品:每周采集1次
  • 单次采集上限:每个商品500条

十二、速查表与常见报错

评论定位速查表:

平台评论容器XPath评论内容评分日期
淘宝//div[contains(@class,‘comment-item’)].//div[contains(@class,‘content’)].//div[contains(@class,‘star’)].//span[contains(@class,‘date’)]
京东//div[contains(@class,‘comment-item’)].//p[contains(@class,‘comment-con’)].//div[@class=‘comment-star’].//span[contains(@class,‘time’)]

| 拼多多 | //div[contains(@class,‘review-item’)] | .//div[contains(@class,‘content’)] | .//span[contains(@class,‘star’)] | .//span[contains(@class,‘time’)] |

常见报错:

报错1:评论加载不全
现象:只采集到前几条评论
原因:评论采用懒加载,需要滚动触发
解决:在采集前滚动评论区域到最底部,每次滚动后等待2秒

报错2:情感分析结果不准
现象:明显的好评被判为负面
原因:基础词典覆盖不足
解决:根据行业扩展专属词典,美容护肤类补充"滋润"“清爽”,食品类补充"好吃"“新鲜”

报错3:跨平台评论格式不一致
现象:京东评论正常,拼多多数据混乱
原因:不同平台HTML结构不同
解决:为每个平台编写独立的定位配置,不要共用

报错4:评论图片下载失败
现象:下载的图片全是空文件
原因:图片链接需要Referer验证
解决:在HTTP请求头中添加对应平台的Referer

内容标签:影刀RPA 电商评论挖掘 情感分析 词云生成 Python协同 数据采集 文本分析

作者:林焱

http://www.gsyq.cn/news/1612075.html

相关文章:

  • vivo X Fold6开售:稳健策略下,能否跨越折叠屏与AI生态门槛?
  • WorkBuddy AI助手:自然语言查询数据库实战指南与安全实践
  • DTSS认证咨询机构哪家值得推荐
  • Linux strip 命令 | 详解及在 Linaro 交叉编译工具链中的使用
  • 第49期 | 求职策略与渠道——AI时代的前端求职指南
  • MySQL零基础入门:从核心概念到实战应用的全链路学习指南
  • 终极图片去重解决方案:AntiDupl.NET免费开源工具完全指南
  • RAG 看起来简单,一上线就翻车?逐个排查 5 个环节
  • LyricsX:macOS歌词同步终极指南 - 打造完美音乐体验
  • DeepSeek V3技术深扒!MoE+MLA如何让AI推理快如闪电?
  • 国产大模型的具象交互补全:魔珐星云让 Qwen/DeepSeek Agent 拥有 3D 身体
  • YOLOv8知识蒸馏实战:从37%到42% mAP的模型压缩与性能提升
  • MySQL从零到一:Windows/Linux环境搭建与核心操作实战指南
  • 企业级Agentic AI落地指南:从概念到工程实践的五维拆解
  • 智能编码助手实战:从环境配置到视频理解与数据插件的进阶应用
  • 数据分析实战:Excel、SQL、Python与Power BI全流程项目指南
  • MySQL主从同步原理与实战:从一主一从到一主多从配置指南
  • 3步掌握QQ音乐加密音频转换,实现音乐自由播放
  • YOLOv8轻量化船舶检测:CA注意力与深度可分离卷积实战
  • 计算机毕业设计之服装信息管理系统的设计与实现
  • 数据分析技能树构建:Excel、SQL、Python与BI工具全链路实战指南
  • 终极指南:如何快速解密RPG Maker加密存档并提取游戏资源
  • 2026恩施黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 零基础Linux运维学习路径:从Linux到Zabbix、Docker、MySQL、Nginx实战
  • 破解人工智能价值交付悖论:让 AI 真正提升软件研发效能
  • ESP-IDF在vscode中编译时遇到 include报错+ 无法找到: build/compile_commands.json 问题解决
  • SQL性能突变排查:从CPU飙高到执行计划分析全流程
  • AI工程化实战:从智能编码到应用部署的全栈工具链解析
  • 企业级Agentic AI实战指南:从核心原理到本地验证
  • 打造半导体创始人行业深度访谈,哪些产业媒体传播调性更适配?