You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UiPath RPA自定义网页数据抓取:动态分页提取及缺页异常处理方案

UiPath 图书网站数据爬取(第5-7页动态提取+容错)实现方案

前置变量配置

先在流程的变量面板新建以下变量,避免流程硬编码:

  • totalPages:Int32类型,默认值0,存储当前搜索关键词对应的实际总结果页数
  • scrapedResult:DataTable类型,存储最终提取到的图书数据
  • currentPageNum:Int32类型,循环遍历页码时的计数变量
  • listLoadSelector:String类型,存储图书列表区域的固定选择器,用来判断页面是否加载完成

步骤1:优先获取搜索结果总页数

不要上来就直接翻页爬取,先在搜索结果第一页完成总页数读取,从根源上避免越界:

  1. 先用Element Exists活动检测分页栏是否存在,如果不存在直接抛出提示:当前搜索关键词无匹配结果,流程终止
  2. 读取总页数优先选稳定性高的方式,不要硬抓页面上显示的页码数字(很多网站分页会显示省略号,比如1 2 ... 6 7 下一页,直接抓数字会拿错最大值):
    • 优先找分页容器的内置属性,绝大多数网站分页组件会带data-total、total-pages这类自定义属性,直接存了真实总页数,用Get Attribute活动取值后转成Int32赋值给totalPages即可
    • 如果网站没有这类属性,再抓"尾页"按钮的跳转链接,从链接参数里解析总页数

步骤2:起始页跳转与前置校验

拿到总页数后先做边界判断,再跳转到提取起始页:

  • 如果totalPages < 5,直接触发业务提示:当前搜索结果共+totalPages.ToString()+页,不足5页,无法提取指定区间数据,流程终止
  • 总页数≥5的情况下,点击第5页的页码按钮跳转,之后用Wait Element Exists活动监听listLoadSelector对应的图书列表元素加载完成,不要用固定时长的Delay,效率低还不稳定

步骤3:循环提取5-7页数据

循环逻辑不要硬编码执行3次,必须同时绑定页码上限和实际总页数两个判断条件:

  1. 给currentPageNum赋初始值5
  2. 循环条件设置为:currentPageNum <=7 AndAlso currentPageNum <= totalPages
  3. 循环体内执行以下操作:
    • 调用之前通过Data Scraping向导生成的提取活动,抓取当前页的图书数据,通过Merge Data Table活动合并到scrapedResult中
    • 判断当前页是否已经到循环边界:如果currentPageNum =7或者currentPageNum = totalPages,直接跳出循环
    • 未到边界的话,点击"下一页"按钮,等待图书列表加载完成后,currentPageNum加1,进入下一轮循环

注意:不要用固定选择器点击第6、第7页的页码按钮,网站到尾页后未显示的页码按钮会直接消失,固定选择器会报找不到元素的错误,逐页点"下一页"的稳定性高很多。有条件的话可以加个校验:翻页后抓当前页高亮的页码数字,和currentPageNum做比对,不一致就重试1-2次翻页,避免网站卡顿导致跳页、错页。

步骤4:不足7页的异常/提示处理

循环结束后加一层判断:

  • 如果totalPages >=7,直接输出提取完成的结果即可
  • 如果totalPages <7,根据业务需求选处理逻辑:
    • 允许保留已提取数据的场景:用Warning级别的Log Message加弹窗提示:提示:当前搜索结果实际共+totalPages.ToString()+页,不足7页,已完成第5页至第+totalPages.ToString()+页的全部可用数据提取
    • 要求必须凑满3页数据才算成功的场景:用Throw活动抛出业务异常,异常信息同上,触发全局异常捕获分支即可

内容的提问来源于stack exchange,提问作者Affy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:51:22