影刀RPA新手教程:美团大众点评采集实战——商户评价与评分数据采集

发布时间:2026/10/9 16:22:51

影刀RPA新手教程:美团大众点评采集实战——商户评价与评分数据采集 影刀RPA新手教程美团大众点评采集实战——商户评价与评分数据采集先认清两件事大众点评的反爬是餐饮平台里最严的没有之一。页面DOM结构每两周换一次关键数据不是直接写在HTML里而是通过CSS字体映射渲染的——你用影刀抓到的评分数字可能是一堆乱码。跟唯品会、淘宝完全不同点评的采集思路必须从抓页面元素切换到抓接口数据页面兜底。这篇写一个完整流程从搜索某城市某品类商户 → 进入详情页抓全部评价 → 清洗emoji和特殊字符 → 按评分排名导出Excel。流程已经在深圳餐饮品类上跑通直接抄就行。如果还没装影刀去 home.linyan.cloud 有完整安装教程。元素定位点评页面有四层反爬第一层CSS字体加密打开点评的商户详情页你会发现评分和人均数字在页面上显示正常但F12看源码是一堆#xe123;这种字符实体。这是CSS自定义字体——页面加载时通过font-face注入一个自定义字体文件把数字映射成乱码影刀获取文本拿到的是原始乱码不是可读数字。解决思路不是去破解字体每次字体文件都不一样而是直接抓接口数据。点评的商户详情页会请求一个接口返回JSON格式的商户信息里面的评分是明文的。F12 → Network → XHR → 搜索review或shop关键词 → 在接口Response里找评分字段。一般接口URL形如/meituan/xxx/shop/detail。第二层滑动验证码连续打开超过10个商户详情页点评弹出滑动验证码。影刀没有原生的滑块验证码处理能力有两个应对方案一是控制频率。每请求一个详情页后延迟3-5秒模拟人类浏览节奏。每处理5个商户后额外休眠30秒。这个频率在我这里跑了一个月没被弹验证码。二是备一条验证码处理分支。在流程中加If判断页面是否出现验证码检查页面title或特定元素如果出现用发送邮件或飞书通知告知人工处理当前流程暂停。第三层内容混淆评价内容里敏感词被替换成了*号有些表情和特殊字符被过滤。但这是平台行为不需要我们处理——直接拿接口返回的*版本就行。真正需要清洗的是emoji。第四层地理位置限制点评的某些数据接口会校验请求IP和所选城市是否一致。如果用公司网络在上海却要采集北京的商户数据部分接口返回空。解决方案是在影刀里用设置浏览器代理或直接在北京的机器上跑。元素捕获的实际用法虽然大部分数据从接口拿但翻页按钮、筛选条件这些交互元素还是要靠元素定位。点评的下一页按钮特征aclassnexthrefjavascript:;下一页/a用文本匹配捕获文本包含下一页的元素比用class匹配稳定——点评换class不换文案。同理评价tab、好评/差评筛选项都用文本匹配。变量设计数据要分层存这个项目的数据结构分三层商户信息字典每个商户一个字典字段包括商户ID、商户名、评分、人均价格、地址、电话、品类、评论总数。评价列表每个商户的评价存成一个子列表每个元素是字典{评价ID, 用户昵称, 评分, 评价内容, 评价时间, 图片数量}。汇总Excel两层表。Sheet1是商户汇总一行一个商户Sheet2是全部评价明细一行一条评价带商户名列关联。变量命名沿用上篇的规范dict_商户信息、list_商户列表、list_评价列表、str_当前城市、str_搜索品类。关键数据类型转换接口返回的评分是字符串4.5排序时要用浮点数比较。类型转换在Python表达式里直接float(评分)不用影刀的文本_到数字因为那个只能转换整数。流程控制双层循环去重主流程结构设置 str_当前城市 深圳 设置 str_搜索品类 火锅 设置 list_商户列表 新建列表 设置 list_已采集ID 新建列表 打开美团首页搜索{城市} {品类} While True 获取当前页商户列表接口方式 For each 商户 in 商户列表 If 商户[id] 在 list_已采集ID 中 Continue 获取商户详情接口方式 解析评分、人均、地址、电话 追加到 list_商户列表 追加商户ID到 list_已采集ID 进入评价页面 循环所有评价页 While True 获取当前页评价列表接口方式 追加到 list_评价列表 If 没有下一页 Break 点击下一页等待加载 返回搜索结果页 点击下一页 If 下一页不可点击 Break重点拆解一、接口方式获取商户列表比捕获元素快得多。点评搜索页一页15个商户接口返回的数据里直接有商户ID、名称、评分、人均省掉逐个捕获的步骤。二、去重用list_已采集ID而非商户名——同名连锁店比如海底捞深圳分店有十几家用名称去重会丢掉数据。商户ID是唯一的。三、评价翻页的判断点评的评价页加载完最后一页后下一页按钮会变灰。判断逻辑是获取下一页元素的class属性如果包含disabled说明到底了。四、返回搜索结果页时如果浏览器历史被新的评价页覆盖了URL变了直接重新搜索会比调试返回按钮省时间。网页自动化要点搜索入口不走页面点击。直接用URL参数搜索https://www.dianping.com/search/keyword/{城市ID}/0_{关键词}城市ID是点评内部编码深圳是7上海是1北京是2。这个值从搜索接口的Response里可以找到。登录态点评不登录只能看前3页搜索结果。建议影刀里手动登录一次勾选记住登录之后cookie有效期约7天。影刀的浏览器插件会自动维护cookie不用每次跑流程都重新登录。等待策略点评的接口响应比一般网站慢特别是评论列表接口有时要2-3秒才返回。建议用等待元素(web)等加载动画消失点评的加载动画是一个class为loading-spinner的元素超时设10秒。页面切换从搜索页进入商户详情页右键在新标签页打开。用获取当前所有标签页⇒切换到指定标签页管理多页面。好处是搜索结果页保持不动不需要重新加载。数据处理清洗评价文本六大步评价文本拿到手是一段包含大量噪音的字符串。清洗六步走第一步去除emojiemoji在Unicode里占两个字符位用Python表达式过滤importre cleanedre.sub(r[\U00010000-\U0010ffff],,raw_text)但在影刀的Python表达式里正则要写成re.sub(r[^\u4e00-\u9fff\w\s,.!?。、\n],,text)这个正则只保留中文、英文、数字、常用标点和空格其他全部去掉。emoji在\U00010000以上中文在\u4e00-\u9fff不重叠。第二步去除HTML标签接口返回的有些评价内容里残留br /和span标签importre textre.sub(r[^],,text)第三步去除收起展开等UI文字点评的长评价中间会插入展开全文文字这是前端加的接口数据里不带。但如果抓的是页面元素文本就可能混入。统一用文本_替换(展开全文, )。![在这里插入图片描述第四步去除首尾空白和多余换行texttext.strip()textre.sub(r\n{3,},\n\n,text)最多保留两个连续换行再多的压缩掉。第五步提取有用信息如果关注的维度是口味/环境/服务三项分项评分这些在评价接口的reviewDetail字段里。提取后用字典存dict_分项评分 {口味: 4.5, 环境: 4.0, 服务: 4.5}第六步写入Excel清洗后的文本用影刀的写入行到Excel逐条写入。但Excel单元格有32767字符限制如果某条评价超长会被截断。解决方法写入前判断len(评价内容) 30000如果超过就截取前面30000字加…内容过长已截断后缀。Excel汇总与排序两张表分开写Sheet1 商户汇总A列商户IDB列商户名称C列综合评分D列人均消费E列地址F列电话G列品类H列评论总数I列采集时间Sheet2 评价明细A列商户名称B列用户昵称C列用户评分D列评价内容清洗后E列评价时间F列图片数量用影刀的Excel_写入区域批量写入。先创建表头行再批量写入数据行。排序用影刀的数据表格_排序按综合评分降序排列TOP10直接导出为新的SheetTOP商户。如果想做更复杂的分析如按品类分组统计平均分用影刀的执行Python脚本importpandasaspd dfpd.DataFrame(商户列表)resultdf.groupby(品类)[综合评分].mean().sort_values(ascendingFalse)影刀的Python环境内置了pandas不需要额外安装。鼠标键盘操作点评的筛选评分用的是自定义滑块而非标准HTML range input影刀无法直接操作。模拟人类拖拽滑块的思路用获取元素位置拿到评分筛选项的最小值和最大值位置计算目标位置目标X 最小值X (最大值X - 最小值X) * (目标评分 - 最低分) / (最高分 - 最低分)用鼠标_移动到最小值位置“鼠标_按住左键”鼠标_移动到目标位置“鼠标_松开左键”这个操作不稳定滑块控件在不同分辨率下位置有偏差。更好的做法不做前端筛选直接在Excel里筛选。把数据全部拉下来在Excel里按评分列降序排列——零前端交互风险。点评的图片放大查看也无法用常规元素操作。遇到需要获取大图的情况接口里photoList有高清图URL直接HTTP下载。进阶接口监听比元素捕获更稳点评的商户搜索接口和评价接口都是GET请求带了大量query参数。要在Network里定位到准确的请求推荐两个方法方法一按Response内容搜索Network → 搜索框输入你看到的商户名或评分数字 → 找到哪个请求的Response里有这个值。方法二看请求路径搜索接口的URL路径一般含/search或/recommend评价接口含/review或/comment。找到后右键 → Copy → Copy as cURL在Postman里验证参数含义。影刀的监听流程开始监听请求URL模糊匹配*search* 打开搜索URL 获取监听结果 解析JSON踩坑开始监听必须在打开URL之前否则请求已经发出去了监听不到。另外如果监听结果有多条同一个URL匹配了多个请求用获取监听结果的索引参数指定第几条。系统联动自动分类通知如果采集目的是持续监控某个品类的新商户和新评价可以接入飞书机器人做自动推送。逻辑读取历史Excel → 获取上次采集的商户ID集合 本次采集商户ID集合 新增商户 本次集合 - 历史集合 If 新增商户不为空 构造消息{城市}{品类}新增{数量}家商户\n{商户列表} 飞书群通知同理新评价监控对比两次采集的评论总数如果某商户评论数增加了把新增的评论推送到飞书。去重用Python集合运算新增商户set(本次商户ID)-set(历史商户ID)影刀里用执行Python脚本运行这段代码输入是两个列表输出是新增ID集合。工程化流程健壮性重试机制接口调用可能超时或返回空。关键步骤获取搜索列表、获取详情、获取评价列表各包一层Try-CatchCatch里重试3次。重试前先延迟执行(5000)等5秒用taskkill /f /im chrome.exe杀掉Chrome重新打开。频率控制每个循环最后加一句延迟执行(随机数(2000, 5000))随机等待2-5秒。数据断点续跑每采集完一页商户数据把list_商户列表写入临时文件JSON格式下次启动时先读临时文件判断进度跳过已采集的商户。参数化配置城市和品类不要硬编码用影刀的输入对话框指令在运行前让用户输入或从Excel配置表读取多个城市-品类组合批量跑。速查表/常见报错报错现象原因解决获取元素文本返回乱码CSS字体加密改用接口数据先F12找到JSON接口打开详情页后页面空白未登录或cookie过期手动登录一次确保cookie有效弹出滑动验证码请求频率过高延迟增加到5秒每5个商户休30秒JSON解析KeyError接口返回结构变了打印Response body确认key名是否改版Excel写入被截断单元格超32767字符写入前判断长度并截断下一页按钮点击无反应按钮被遮挡或class变了用JS执行element.click()绕过飞书通知发送失败webhook限流汇总成一条消息不要逐条发送代理IP请求返回空城市限制确认代理IP和查询城市所在地区一致补充一个数据量估算深圳火锅品类约2000家商户每家平均50条评价全部采集约10万条评价。单线程跑完全部大概需要6-8小时受限于频率控制。如果需要加速可以在多台机器上分城市同时跑每台只处理一个品类的一个区域。避免被封的底线单台机器24小时内不超过3000次请求搜索详情评价各算一次。超过这个数IP大概率被加入风控名单。内容标签美团采集、大众点评RPA、商户数据抓取、评价清洗、评分分析作者林焱
延伸阅读

更多相关文章

2026/10/9 16:17:49

数据库课设下载包跑通指南:从SQL脚本到JDBC配置全拆解

简介:《山东科技大学数据库系统概论课程设计》提供了一套可直接使用的课程设计资料,面向正在学习数据库系统概论、需要完成表结构设计与操作练习的高校学生。资源共5个文件,包含C源程序、可执行文件、编译中间文件、测试数据及详细说明文档&a…

2026/10/9 16:17:49

YOLOv8电梯电动车识别预警系统实战指南

简介:本资源是一套基于YOLOv8实现的社区电动车进电梯智能预警系统完整工程,面向计算机视觉初学者、人工智能方向本科生及毕设/课程设计需求者,聚焦真实社区安全管理场景,解决电动车违规入梯引发的消防隐患问题。包内共97个文件&am…

2026/10/9 17:18:12

Func、Skill 与 MCP:Agent 工具调用三层架构实战指南

最近在折腾 Agent 开发时,被一个概念问题搞得有点上头:工具到底该用 func、skill 还是 MCP?搜索引擎的结果五花八门,有说 skill 是未来,有说 MCP 才是标准,还有的直接把 function calling 当成全部。等我把…

2026/10/9 17:18:12

Android HTML答题引擎:Kotlin+Java双语言深度集成方案

简介:这是一份面向Android开发初学者与进阶学习者的HTML整合型答题APP完整源码项目,适用于移动应用开发实践、混合式界面设计及Kotlin/Java协同开发场景。资源共786个文件,总大小47.87MB,涵盖182个Java与8个Kotlin源文件&#xff…

2026/10/9 17:18:12

手写BP神经网络实现鸢尾花和红酒分类:从原理到避坑

简介:这是一份面向高校机器学习课程的BP神经网络实验资源,以鸢尾花与红酒数据集为对象,完成二分类/多分类建模练习,适合正在学习前馈神经网络、反向传播算法或需要快速搭建课程实验的学生参考。压缩包共收录18个文件,包…

2026/10/9 17:18:12

Ubuntu下zip压缩解压指南:命令行操作、乱码解决与tar.gz选型

我最近在整理一批旧项目的归档文件,同事从Windows那边发过来的压缩包在Ubuntu下面解压时又是一堆乱码文件名,加上自己这边要批量打包日志目录上传,来来回回折腾了好几次。索性把在Ubuntu下用zip压缩和解压文件夹的完整操作、踩坑记录和替代方…

2026/10/9 17:18:12

MySQL新手避坑指南:从命令行实操到生产级排错

简介:本资源是一份面向数据库初学者与Web开发入门者的MySQL基础教学课件,聚焦关系型数据库核心概念、设计方法与SQL实践,特别适合高校计算机课程教学、自学备考及后端开发岗新人夯实基础。课件以PPTX格式呈现,共1个文件&#xff0…

2026/10/9 17:13:10

基于PCA9422与STM32的完整电源管理方案设计

|电源左右,不只是把电压从芯片里送出来那么简单。你负责的主控还在欢快跑业务逻辑,电源域的异常已经在背地里拉低整机寿命了。做低功耗嵌入式设备的时候,很多开发者习惯直接让 MCU 接一颗 LDO 和电池,代码跑起来再回头补电源逻辑。…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑