影刀RPA新手教程大众点评数据采集完全指南——店铺信息、用户评价与竞争对手分析作者林焱一、认识影刀与安装配置我做了三年餐饮行业运营每个月都要手动翻大众点评看同行的新评价、新菜单、新活动。一个商圈几十家店每家几十条新评价看完眼睛都快瞎了。后来一个技术朋友推荐我试试影刀RPA一周时间就把店铺监控流程搭出来了。影刀的安装很简单Windows系统直接下载安装包默认路径一路点击即可。装好后有两个关键配置一是安装Chrome浏览器扩展在影刀编辑器顶部菜单「工具」-「浏览器扩展管理」二是确认Chrome版本与影刀兼容。我当时就栽在这里——Chrome自动更新后影刀扩展失效了所有流程跑不起来。解决方案是把Chrome的自动更新关掉或者每次Chrome大版本更新后等影刀发布对应的扩展版本。更多项目经验可访问 home.linyan.cloud 查看。二、元素定位四合一XPathCSS正则大众点评的页面元素层级嵌套非常深单靠一种定位方式大概率翻车。以下是我实测可用的定位方案。XPath定位店铺名称//div[contains(class,shop-list)]//h4[contains(class,shop-name)]CSS选择器定位评分div.shop-info span.shop-rating正则提取点评数据中的数字原始文本人均 ¥88 口味:8.5 环境:8.2 服务:8.0 提取人均人均\s*[¥]\s*(\d) 提取口味口味:(\d\.?\d*) 提取环境环境:(\d\.?\d*) 提取服务服务:(\d\.?\d*)影刀四合一配置{定位策略:四合一,主定位:XPath,xpath://div[contains(class,review-item)],备选_css:div.review-item,备选_ID:review-list,备选_文本:全部评价,等待超时:10000,重试次数:3}三、变量与数据类型大众点评数据维度多变量结构需要精心设计。全局变量变量名dianping_cookie 类型字符串 说明大众点评登录态Cookie有效期约7天字典变量——单店信息店群矩阵自动化突破运营极限变量名shop_info 值 { 店名: 海底捞火锅, 地址: 朝阳区建国路88号, 人均: 128, 口味评分: 8.8, 环境评分: 8.5, ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a00d93ddacb344c2be493f2709da2d3b.png#pic_center) 服务评分: 9.0, 评论总数: 3568, 商圈: 国贸, 分类: 火锅 }数据表格——多店对比店名人均口味环境服务评论数商圈近30天新增评论店A888.58.28.02356国贸156店B1289.08.88.55689国贸423四、流程控制大众点评有严格的反爬机制翻页逻辑需要特别设计。翻页采集不确定总页数情况指令无限循环 循环体 指令批量数据抓取 网页对象当前页面 行元素//div[contains(class,shop-item)] 指令获取元素对象 元素xpath//a[contains(class,next)] 保存至next_btn 指令If条件判断 条件next_btn.class中包含disabled True退出循环 False点击下一页后随机等待2-5秒 结束循环评论翻页滚动加载指令无限循环 循环体 指令记录当前评论总数 保存至review_count_before 指令执行JS脚本 脚本window.scrollTo(0, document.body.scrollHeight) 指令等待 时长3000毫秒 指令获取当前评论总数 保存至review_count_after 指令If条件判断 条件review_count_before review_count_after True退出循环已到底部 结束循环五、网页自动化实战大众点评的网页自动化是我遇到的难度最高的网站之一。反爬应对——这是我当时踩过的大坑我第一次运行流程采集到第3页就被封了IP弹出了验证码。后来总结了一套反爬节奏指令设置网络请求头 User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 // 每次操作之间加入随机等待 指令随机等待 最短3000毫秒 最长8000毫秒 // 每采集5页休息一分钟 指令If条件判断 条件当前页数 % 5 0 True等待60000毫秒模拟人工滚动指令执行JS脚本 脚本 var scrollStep 300; var scrollInterval setInterval(function() { window.scrollBy(0, scrollStep); if (window.scrollY window.innerHeight document.body.scrollHeight) { clearInterval(scrollInterval); } }, 200);六、数据处理评论情感分析Python协同指令Python脚本 脚本内容 import jieba def sentiment_score(text): positive_words [好吃,推荐,不错,棒,优秀,满意,值得] negative_words [难吃,差评,失望,不值,踩雷,一般] pos_count sum(1 for w in positive_words if w in text) neg_count sum(1 for w in negative_words if w in text) if pos_count neg_count: return 正面 elif neg_count pos_count: return 负面 else: return 中性 comments 影刀获取的评论列表 results [sentiment_score(c) for c in comments]竞争对手综合分析指令Python脚本 脚本内容 # 同商圈竞品对比分析 def competitor_analysis(our_shop, competitors): report [] report.append(f【{our_shop[name]}】竞品分析报告) report.append(f本店口味评分{our_shop[taste]}商圈均值{avg_taste}) # 找出评分高于本店的竞争对手 threats [c for c in competitors if c[taste] our_shop[taste]] for t in threats: gap t[taste] - our_shop[taste] report.append(f⚠ 威胁{t[name]}评分高出{gap}分) return \n.join(report)七、鼠标键盘与图像操作大众点评有些数据需要鼠标交互才能展示。鼠标悬停查看星级详情指令鼠标移动到元素 元素xpath//div[contains(class,star-box)] 移动方式模拟人工 指令等待 时长1000毫秒 指令获取元素文本 元素xpath//div[contains(class,star-tip)] 保存至star_detail图像识别验证码指令元素截图 元素xpath//img[contains(class,captcha)] 保存至captcha.png 指令OCR识别 图片captcha.png 识别引擎默认 保存至captcha_result验证码处理是个持久战目前还没有完美方案。我的经验是降低采集频率不要触发风控机制才是最好的策略。八、进阶技能多商圈轮询采集指令循环 类型ForEach 列表[国贸,三里屯,望京,中关村,五道口] 循环体 指令在网页中输入 元素idsearch-input 输入内容{商圈名} 指令点击元素 元素xpath//button[classsearch-btn] 指令执行子流程 子流程店铺列表采集代理IP轮换指令Python脚本 脚本内容 import random proxies [ http://proxy1:8080, http://proxy2:8080, http://proxy3:8080 ] current_proxy random.choice(proxies) # 注意影刀内置浏览器目前不直接支持代理切换 # 此方案适用于HTTP请求方式获取数据数据增量更新指令Python脚本 脚本内容 # 读取历史数据 old_data 影刀Excel读取(历史文件) new_data 影刀当前采集数据 # 找出新增评论 old_review_ids {item[评论ID] for item in old_data} new_items [item for item in new_data if item[评论ID] not in old_review_ids] # 合并写入 all_data old_data new_items九、平台实战——完整竞品监控方案完整流程设计打开大众点评首页加载Cookie保持登录切换目标城市依次搜索各商圈采集店铺列表对每个店铺采集最新评论数据清洗与对比分析生成竞品报告发送飞书通知我当时搭建这个流程遇到的最大问题不是技术而是数据量太大。国贸商圈光火锅类目就有近200家店每家采集最近50条评论流程跑了3个多小时。后来优化了一下只采集有评分变化的店铺评论只采集最近30天新增的运行时间缩到了40分钟。十、系统联动飞书多维表格写入temu店群自动化报活动案例指令发送HTTP请求 方法POST URLhttps://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/batch_create 请求头 Authorization: Bearer {tenant_access_token} Content-Type: application/json 请求体 { records: [ { fields: { 店名: xxx, 评分: 8.5, 今日新增评论: 23 } } ] }钉钉机器人预警指令发送HTTP请求 URLhttps://oapi.dingtalk.com/robot/send?access_tokenxxx 方法POST 请求体 { msgtype: markdown, markdown: { title: 竞品预警, text: **竞品异常预警**\n 店铺{店名}\n 事件30天内新增差评超过50条\n 时间{当前时间} } }Excel报表自动生成指令写入Excel文件 文件路径D:\报表\大众点评竞品分析_{日期}.xlsx 工作表1店铺总览 工作表2评分趋势 工作表3评论抽样十一、工程化与规范流程模块化设计大众点评监控/ ├── 主流程_每日监控.flow ├── 模块_登录.flow ├── 模块_店铺列表采集.flow ├── 模块_评论采集.flow ├── 模块_数据处理.flow ├── 模块_通知发送.flow ├── 配置/ │ ├── cookie.txt │ ├── 商圈列表.json │ └── 关键词列表.json └── 数据/ ├── 历史/ └── 日报/注释模板// 模块店铺列表采集 // 作者林焱 // 日期2025-06-24 // 说明按商圈搜索并采集店铺基础信息 // 输入商圈名称字符串 // 输出店铺数据表格错误重试策略指令设置 最大重试次数3 重试间隔5000毫秒 失败处理跳过当前条目记录到错误日志十二、速查表与常见报错定位速查表目标XPath店铺名称//h4[contains(class,‘shop-name’)]评分//span[contains(class,‘sml-rank-stars’)]人均消费//span[contains(class,‘avg-price’)]评论内容//div[contains(class,‘review-words’)]评论时间//span[contains(class,‘time’)]商圈筛选//a[contains(class,‘area-item’)]常见报错报错1验证码拦截错误信息访问过于频繁请验证解决方案降低采集频率建议间隔5秒以上模拟人工行为必要时切换IP报错2Cookie频繁失效错误信息登录已过期解决方案将Cookie有效期检测加入前置流程失效时自动重新获取报错3评论只加载了部分错误信息采集到的评论数量远少于页面显示解决方案使用滚动加载方案每次滚动后等待3秒循环直到评论数不再增加报错4CSS选择器定位不稳定错误信息同一个选择器有时候能定位到有时候不能解决方案使用四合一备用策略首选XPath备用CSS最后用文本定位兜底内容标签影刀RPA 大众点评 数据采集 竞品分析 店铺监控 评论采集 网页自动化作者林焱