ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

影刀RPA实操指南:携程酒店价格与评分批量采集

影刀RPA实操指南:携程酒店价格与评分批量采集 影刀RPA实操指南携程酒店价格与评分批量采集做旅游比价、选酒店、盯房价的人都有一个痛点携程上同一个城市几百上千家酒店价格随日期、随楼层浮动人工翻页抄价格既慢又容易错。这篇文章教你用影刀RPA把携程酒店列表的价格、评分、评论数批量抓进Excel支持多城市多日期批量跑再挂上定时任务做房价波动监控。我非技术出身用影刀RPA做采集两年多携程这种重动态加载的页面恰恰是练元素定位和等待策略最好的战场。整体思路四步打开携程酒店列表页并按城市日期构造URL、等待列表加载后捕获酒店卡片、循环卡片提取名称价格评分写入Excel、多城市循环加定时任务收尾。下面按模块逐个拆。安装与环境跑动态页面前的必修课影刀RPA的安装流程官网下载客户端、双击安装、注册登录。社区版免费每天30分钟时长携程一个城市跑一轮大概十几分钟新手练手够用要监控多个城市就得上创业版时长不限。浏览器插件是硬前提。客户端设置里找到浏览器插件给Chrome装上并确认图标点亮。携程页面大量内容是滚动后异步加载的没有插件连元素都捕获不了这一步跳过等于白干。携程对登录态的要求不高酒店列表不登录也能看但价格日历等详情偶尔会弹登录框流程里留一个判断元素是否存在登录弹窗的判断存在就点关闭别让它挡住列表。项位置说明客户端官网下载安装社区版够练手插件设置→浏览器插件不装无法捕获登录弹窗判断元素是否存在存在就关闭元素定位四合一酒店列表的稳定捕获法携程酒店列表页是典型的滚动加载卡片结构先捕获一张酒店卡片再用获取相似元素列表拿到整页卡片这是标准的相似元素采集套路。具体操作拖入点击元素类指令点元素选择框点捕获新元素鼠标移到第一张酒店卡片上出现橙色边框后点击。捕获完立刻打开元素属性改XPath因为默认路径里带动态索引翻页或滚动后必然失效。# 捕获元素酒店列表页全部酒店卡片 //div[contains(class,hotel-card)] | //div[contains(class,list-card)] # 捕获元素酒店名称 .//h2[contains(class,name)] | .//a[contains(class,name)] # 捕获元素价格数字 .//span[contains(class,price)] # 捕获元素评分与评论数所在块 .//*[contains(class,score) or contains(class,comment)]携程页面不同时期改版过几轮class命名不统一所以XPath里我大量用或|和contains模糊匹配做兼容多写两个候选路径改版时不至于全挂。CSS选择器在这里同样可用.hotel-card .price这种写法短平快class稳定时优先用它结构常变就用XPath的contains兜底两套语法的选型就这一个原则。评分和评论数经常拼在一个文本里比如4.8分/1234条点评用正则表达式拆开\d\.\d抠评分\d条抠评论数。正则的三种场景里从混合文本抠数字是采集流程里用得最频繁的。变量与数据类型城市列表与价格清洗携程采集里变量设计的核心是两层列表外层城市列表字符串列表内层酒店数据每家酒店一个字典键是酒店名、价格、评分、评论数。字典取键之前先判断键在不在不在给默认值0否则一家酒店缺评分就把整个流程打断。价格清洗是最重要的变量处理环节。获取元素文本读到的价格是¥389或389起这样的字符串直接比较会出错。流程里固定一个清洗节点# 输入s_price 为原始价格文本如 ¥389 或 389起# 输出f_price 为浮点数importre sstr(s_price).replace(¥,).replace(,)mre.search(r\d\.?\d*,s)f_pricefloat(m.group())ifmelse0.0字符串拼接用在构造列表页URL上。携程酒店列表页URL里带城市ID和日期参数把城市ID、入住日期、离店日期三个参数拼进去就能实现换城市换日期不换流程。日期字符串用日期时间指令生成今天加一天算入住、加两天算离店以后想采集下周的价格只改数字。列表的去重指令在滚动加载场景必备后面细说。流程控制多城市批量与异常隔离携程批量采集的流程控制就是一个标准的外层循环城市、内层循环酒店结构外加翻页循环三层。外层用ForEach列表循环遍历城市列表城市内的酒店列表用获取相似元素列表拿卡片接ForEach列表循环逐个提取翻页用While条件循环条件是下一页按钮不是disabled状态XPath写法//a[contains(class,next) and not(contains(class,disabled))]翻到底自动停。这里最大的坑是循环体内不做异常隔离。携程偶尔会插入广告卡片结构完全不同一提取就报错整个城市的数据全丢。我在每个循环体里都包Try-CatchCatch块用打印日志记录第几页第几家酒店出错然后continue下一家。加了之后流程从半夜悄悄挂掉变成跳过脏数据继续跑稳定性天壤之别。If条件判断的三处应用判断元素是否存在评分块新酒店可能无评分判断价格是否低于阈值低价酒店单独记一张表判断评论数是否过千过滤掉开业不久的酒店。广告卡片和脏卡片是携程列表里最大的不稳定源异常隔离不是可选项。网页自动化等待、滚动加载与翻页全解网页自动化是携程采集的重头这个页面对等待策略的要求比一般电商页更高。第一步打开网页URL参数填拼接好的列表页地址打开方式选新建标签页。打开后第一件事不是采集是等待元素出现酒店卡片超时给足20秒——携程首页跳转和风控检查比一般页面慢等元素等不到就打日志换下一个城市别硬取。第二步是滚动加载。携程列表滚动到底才加载下一批酒店标准做法滚动页面→获取相似元素列表→列表去重→数量不变就停变了继续滚。用While条件循环包住整个滚动块循环条件是列表数量比上次多。只滚一次就采集后面几十家酒店全漏这是我第一次跑携程时的真实战果——只抓到8家实际页面有60多家。第三步弹窗处理。携程的登录引导、优惠券弹窗按五步标准流程处理判断元素存在→点关闭→二次确认→点右上角叉→放行。遇到盲点弹窗元素定位点不动的用点击图像按截图匹配点击锚点选中心位置实测稳定。第四步翻页与滚动并存。有的列表翻页是页码按钮有的是继续滚动判断标准看页面上有没有翻页条有就走disabled判断的While翻页没有就走滚动去重。两种逻辑我都封装成子流程哪套能用切哪套。环节方案坑页面打开等待元素出现20秒超时别太短滚动加载滚动去重数量判断只滚一次会漏一半翻页条Whiledisabled判断别写固定页数登录弹窗五步标准流程盲点弹窗用点击图像数据处理Excel落表与跨天比价数据落表用打开Excel绑定工作簿循环体内写入单元格按列写入城市、酒店名、价格、评分、评论数、采集时间。行号变量逐行自增一个城市写完自动续到下一个城市不覆盖。跨天比价是这套流程的价值所在。每天采集的文件按日期命名存档第二天跑的时候用获取表格把昨天的表读成数据表格转成酒店名→昨价的字典本轮价格和昨价一对比涨幅超过10%的酒店单独写进涨价预警Sheet。字典键不存在就跳过新酒店没有昨价这个判断前面变量模块讲过用在这里刚好。清洗环节除了价格还要处理酒店名里的引号和括号用替换文本统一清掉不然做字典匹配时同名酒店对不上号。进阶技能HTTP请求、OCR与Python协同进阶一HTTP请求。携程部分列表数据走接口HTTP请求指令GET接口地址返回的JSON用JSON指令解析循环取酒店字段速度比页面采集快几倍。缺点是接口带鉴权且会变所以我的流程一直是HTTP优先、页面采集兜底接口失效自动切回。进阶二OCR。价格日历里的部分价格是图片渲染用OCR文字识别把识别结果接正则清洗能补上页面采集拿不到的数据。进阶三Python协同。把采集结果传进Python节点跑Pandas按评分分桶算均价、按价格段统计酒店数量输出一张城市酒店画像表。十行代码的事报告档次立涨。图像和鼠标键盘在这套流程里的角色是兜底点击图像处理盲点弹窗和图片型按钮键盘输入配合快捷键关闭意外弹出的窗口。系统联动定时房价监控与通知房价监控要自动跑定时任务在客户端右下角计划任务里配置每天上午10点执行一轮全部城市。夜间任务的前提是电脑不睡眠电源计划设成从不这是定时任务翻车率最高的原因。跑完的联动动作涨价清单非空时用Webhook发一条摘要进群没有群的用发送邮件指令把当天的完整Excel当附件发到自己邮箱。想让家人帮忙选酒店把邮件转发过去就行比截图快得多。工程化规范子流程、调试与版本选择流程定型后拆四个子流程构造URL与打开页面、采集单城市列表参数城市ID、数据清洗比价、通知发送。子流程用输入输出参数传递命名01_构造URL这种编号格式主流程四步一目了然。调试技巧可疑指令右键添加断点单步执行变量面板盯价格和列表数量两个关键变量每个城市跑完打印日志输出酒店总数数量异常比如只有8家立刻能发现滚动逻辑失效。我就是靠这条日志发现的漏抓问题。版本选择一个城市一轮十几分钟社区版30分钟只够跑两个城市城市多了升级创业版运行时长无限制这笔账要提前算。易错速查表现象原因解决只采集到第一屏酒店滚动加载没循环滚动去重数量判断循环价格全是0清洗正则没匹配上检查¥/两种符号翻页无限循环disabled判断失效XPath加not(contains)某城市整个失败广告卡片报错中断循环体包Try-Catch字典匹配不上酒店名含引号括号替换文本统一清洗学习资源与延伸阅读这套携程房价监控的完整流程源码我放在代码仓库 home.linyan.cloud可以直接参考改造把城市列表换成你关注的目的地即可。官方文档里等待元素出现和获取相似元素列表两篇配合本文看动态加载页面的问题基本都能对号入座。#影刀RPA #RPA自动化 #数据采集 #携程 #网页自动化作者林焱
返回列表