影刀RPA 翻页采集策略大全:六种翻页方式的选择与组合
影刀RPA 翻页采集策略大全六种翻页方式的选择与组合作者林焱什么情况用这个列表页的数据采集是RPA最高频的场景之一。但翻页这件事比你想象的要复杂得多——不是每个网站的翻页方式都一样。有的用下一页按钮、有的用页码链接、有的用加载更多、有的滚动到底部自动加载、还有的URL规律明显直接拼链接就行。用错翻页策略的结果漏数据、重复采集、无限循环、或者卡在某一页动不了。这篇文章把六种最常见的翻页方式一一拆解告诉你遇到什么网站用什么策略以及各自的避坑要点。怎么做第一步先识别网站的翻页类型打开目标网站观察翻页区域。对应这六种类型翻页类型特征对应策略下一页按钮有下一页或按钮循环点击下一页页码跳转显示页码1,2,3…循环点击页码或URL拼页数加载更多查看更多按钮循环点击加载更多无限滚动滚动到底自动加载滚动等待URL规律URL中有pageN参数直接构造URL列表API分页数据由接口返回调API翻页第二步策略一——下一页按钮翻页最常见的翻页方式也最容易处理影刀流程 1. 【ForEach】→ 采集所有当前页数据 2. 【IF条件】→ 【元素存在】下一页按钮 ├── True: 【点击元素】→ 下一页按钮 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f7055fc1c3094394a348d49786b4a501.png#pic_center) │ 【等待元素】→ 第一行数据确认翻页成功 │ 【继续循环】回到步骤1 └── False: 【跳出循环】关键细节如何判断到了最后一页# 方法1检查下一页按钮是否disabled# 用F12查看最后一页的按钮class是否包含disablednext_btndriver.find_element(By.CSS_SELECTOR,.next-page)is_disableddisabledinnext_btn.get_attribute(class)# 方法2比较当前页和总页数total_pagesint(driver.find_element(By.CSS_SELECTOR,.total-pages).text)current_pageint(driver.find_element(By.CSS_SELECTOR,.current-page).text)ifcurrent_pagetotal_pages:break# 方法3最稳妥——检查点击后URL或内容是否变化old_urldriver.current_url driver.find_element(By.CSS_SELECTOR,.next-page).click()time.sleep(1)ifdriver.current_urlold_url:break# 没翻动到最后一页了踩坑重点有些网站的下一页按钮虽然在页面上但是透明的或者被遮挡的。用【元素存在】判断通过但【点击】报元素不可点击。这时候需要先滚动到按钮可见区域店群矩阵自动化突破运营极限# 在点击前滚动到按钮位置btndriver.find_element(By.CSS_SELECTOR,.next-page)driver.execute_script(arguments[0].scrollIntoView(true);,btn)time.sleep(0.3)btn.click()第三步策略二——页码链接翻页有些网站没有下一页只有页码数字[1] [2] [3] [4] [5] ... [100]直接造URL如果URL规律明显第1页: https://example.com/list?page1 第2页: https://example.com/list?page2 ...# 最简单的方式循环拼URLbase_urlhttps://example.com/list?page{}forpageinrange(1,101):# 假设共100页urlbase_url.format(page)print(f正在采集第{page}页:{url})# 用影刀的【打开网页】或【发送HTTP请求】获取总页数再循环# 先从页面提取总页数total_pages_textdriver.find_element(By.CSS_SELECTOR,.total-pages).text total_pagesint(total_pages_text)# 共100页 → 100forpageinrange(1,total_pages1):![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/45e30ce299e9493b9de43b61062b1960.png#pic_center)# 处理每一页pass第四步策略三——加载更多翻页点击加载更多按钮新数据追加到当前页底部不是跳转到新页面影刀流程 循环开始设最大次数防止死循环 【IF条件】→ 【元素存在】加载更多按钮 【点击元素】→ 加载更多按钮 【等待】→ 1秒等新数据加载 否则 【跳出循环】注意加载更多不改变当前URL数据是追加的。你在采集时需要保留之前采集到第几个的索引避免重复采集# 记录已采集数量processed_count0for_inrange(50):# 最多加载50次# 获取当前所有数据all_itemsdriver.find_elements(By.CSS_SELECTOR,.item)# 只处理新增的数据new_itemsall_items[processed_count:]foriteminnew_items:# 处理新数据passprocessed_countlen(all_items)# 尝试点击加载更多try:load_more_btndriver.find_element(By.CSS_SELECTOR,.load-more)ifload_more_btn.is_displayed():load_more_btn.click()time.sleep(1.5)else:breakexcept:break第五步策略四——无限滚动翻页页面滚动到底部自动加载没有按钮defscroll_and_collect(driver,max_scrolls100):滚动到底部采集数据直到没有新数据last_heightdriver.execute_script(return document.body.scrollHeight)processed_count0no_change_count0for_inrange(max_scrolls):# 滚动到底部driver.execute_script(window.scrollTo(0, document.body.scrollHeight);)time.sleep(2)# 等待新内容加载# 检查页面高度是否变化new_heightdriver.execute_script(return document.body.scrollHeight)ifnew_heightlast_height:no_change_count1ifno_change_count3:# 连续3次没新内容到底了breakelse:no_change_count0last_heightnew_height# 采集所有数据all_itemsdriver.find_elements(By.CSS_SELECTOR,.item)returnall_items针对特定容器的滚动有些页面不是body滚动是某个div滚动# 滚动指定容器containerdriver.find_element(By.CSS_SELECTOR,.list-container)driver.execute_script(arguments[0].scrollTop arguments[0].scrollHeight,container)第六步策略五——URL规律翻页最高效如果URL有明显的页码规律跳过页面交互直接造URL# 常见URL翻页模式patterns[https://example.com/list?page{},# ?page2https://example.com/list?p{}size50,# ?p2size50https://example.com/list/{}/,# /list/2/https://example.com/list?offset{},# ?offset50偏移量https://example.com/list_{}.html,# /list_2.html]![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/42a13f7f0982419d965c69493525bdbc.png#pic_center)# 批量生成URLbase_urlhttps://example.com/list?page{}size20urls[base_url.format(i)foriinrange(1,51)]# 生成50页URL# 在影刀中用ForEach遍历URL列表效率最高第七步策略六——API翻页最专业用F12的Network面板发现翻页用的是API接口直接调接口翻页importrequestsdefcollect_via_api(base_url,total_pages,headers):通过API翻页采集all_data[]forpageinrange(1,total_pages1):params{page:page,size:50,sort:create_time}resprequests.get(base_url,paramsparams,headersheaders,timeout10)ifresp.status_code200:dataresp.json()itemsdata.get(data,{}).get(list,[])all_data.extend(items)# 检查是否最后一页iflen(items)50orpagedata.get(data,{}).get(totalPages,0):breakelse:print(f第{page}页请求失败:{resp.status_code})breakreturnall_data有什么坑坑一翻页和采集的顺序搞反现象先翻页再采集上一页的数据——数据全丢了。正确顺序永远是temu店群自动化报活动案例循环开始 1. 采集当前页数据 2. 检查是否有下一页 3. 有翻页 → 等待加载 → 回到1 4. 没有跳出循环坑二下一页按钮点击后没等加载就继续现象点击下一页后立刻获取元素拿到的还是上一页的数据。解决翻页后必须等待页面变化。验证方式是检查某个标识性元素比如第一行的文本是否变化了# 翻页前记录first_item_textdriver.find_element(By.CSS_SELECTOR,.item:first-child .title).text# 点击下一页driver.find_element(By.CSS_SELECTOR,.next-page).click()# 等待第一行变化![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9392cb43435c41c5af5678d4eb84a235.png#pic_center)for_inrange(30):time.sleep(0.3)current_textdriver.find_element(By.CSS_SELECTOR,.item:first-child .title).textifcurrent_text!first_item_text:break# 翻页成功坑三加载更多按钮点完后消失现象多次点击加载更多后按钮不见了但你以为还会出现流程一直等。解决设置一个合理的最大循环次数同时检查按钮是否还存在且可用max_clicks30foriinrange(max_clicks):buttonsdriver.find_elements(By.CSS_SELECTOR,.load-more)ifnotbuttonsornotbuttons[0].is_displayed():break# 按钮没了到底了buttons[0].click()time.sleep(1)坑四无限滚动触发过快现象滚动太快页面还没加载就又滚了导致加载失败。原因滚动触发了加载请求但新数据还没渲染出来你又滚了一次触发了新的请求。多次并发请求可能导致数据错乱。解决滚动后等2-3秒检查数据是否真的变多了再继续。坑五URL中含有不可预测的参数现象URL中除了page参数还有_t时间戳或tokenxxx直接拼URL翻页失败。解决保留第一页URL中的其他参数只替换页码部分importre urlhttps://example.com/list?page1_t1710464425tokenabc123# 只替换page参数保留其他参数urlre.sub(rpage\d,fpage{new_page},url)总结翻页策略的选择优先级——API翻页 URL规律翻页 下一页按钮 “加载更多” 无限滚动。越往左效率越高、稳定性越好。能用接口就别用页面能用URL就别点按钮。

相关新闻

数字时代的文字困境:从编码到字库的全面解析

数字时代的文字困境:从编码到字库的全面解析

1. 当我们在数字世界"查无此字"时上周帮老家亲戚处理一份电子文档时,我遇到了一个令人哭笑不得的场景——系统反复提示"查无此字"。这个看似简单的生僻字显示问题,背后牵扯的却是数字时代文字传承的深层困境。就像当年秦始皇需要&qu…

2026/7/23 1:50:48阅读更多 →
IDC机房基础设施与网络架构设计指南

IDC机房基础设施与网络架构设计指南

1. IDC机房的基础设施要求IDC(Internet Data Center)机房作为企业数据存储和网络服务的核心枢纽,其基础设施的完备性直接决定了服务的可靠性和稳定性。一个合格的IDC机房需要满足以下几个关键条件:1.1 电力供应系统电力是IDC机房的…

2026/7/23 1:50:48阅读更多 →
拒绝通宵赶论文!7款AI论文写作工具1天搞定全学科毕业论文

拒绝通宵赶论文!7款AI论文写作工具1天搞定全学科毕业论文

先打破错观念:你正在用的“攒论文”方法,正在害你毕不了业 千万别再熬夜蹲图书馆攒论文了!也别再当“学术裁缝”东拼西凑剪别人的内容了!更别随便找个通用大模型直接生成全文直接用了! 这些看起来“省时间”的旧做法&a…

2026/7/23 1:48:47阅读更多 →
Photoshop绘画新手避坑指南与实战技巧

Photoshop绘画新手避坑指南与实战技巧

1. 新手PS绘画避坑指南:从入门到精通的实战经验刚接触Photoshop绘画的新手们,总会遇到各种让人抓狂的问题——为什么笔刷画不出颜色?图层怎么突然消失了?压感笔为什么没有反应?作为从业十年的数字绘画师,我…

2026/7/23 4:17:12阅读更多 →
掌握Linux服务管理:systemd全面指南

掌握Linux服务管理:systemd全面指南

Linux 服务管理 systemd 介绍 基本概念 CentOS 7 使用 Systemd 引导系统启动,速度最快,所有进程无论有无依赖关系则都是并行启动(很多时候进程没有真正启动而是只有一个信号或者说是标记而已,在真正利用的时候才会真正启动&#x…

2026/7/23 4:17:12阅读更多 →
面试题目:讲一下对 Spring 事务的理解

面试题目:讲一下对 Spring 事务的理解

Spring 本身是没有事务的,我们可以从 Spring 如何去实现对数据库事务的一个封装去讲。 底层的运行原理就是你给方法加了Transactional这个注解。Spring 就会给这个类去生成一个代理对象。当我们调用这个方法的时候,其实就是走的代理对象的逻辑。方法在执…

2026/7/23 4:17:12阅读更多 →
西安各区小升初语文、数学、英语真题及答案解析

西安各区小升初语文、数学、英语真题及答案解析

2026/7/23 4:17:12阅读更多 →
工业视觉镜头核心参数全解 | 精准选型规避成像缺陷、提升检测精度、适配多场景机器视觉项目落地

工业视觉镜头核心参数全解 | 精准选型规避成像缺陷、提升检测精度、适配多场景机器视觉项目落地

目录 一、前言 二、工业镜头六大核心参数底层原理与精细化选型指南 2.1 焦距:FOV视野与成像倍率的核心决定因素 2.1.1 核心原理 2.1.2 量化选型公式与实操规范 2.1.3 场景适配选型标准 2.2 分辨率:系统细节捕捉能力的核心度量指标 2.2.1 核心原理 2.2.2 分辨率黄金匹…

2026/7/23 4:17:12阅读更多 →
给自家新能源汽车做底盘整备升级,建立汽修实际体验到底怎么样?

给自家新能源汽车做底盘整备升级,建立汽修实际体验到底怎么样?

家人们谁懂啊!我开了3年的特斯拉Model Y,之前总觉得底盘散得快“散架”,差点被4S店忽悠花一万多换整套悬挂,直到我去做了全套底盘整备升级,现在开起来的质感跟刚提新车的时候几乎没差,这钱花得真的比换全套…

2026/7/23 4:15:12阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →