当前位置: 首页 > news >正文

影刀RPA进阶教程_网页动态加载数据抓取策略

影刀RPA进阶教程:网页动态加载数据的抓取策略——Ajax、懒加载与无限滚动

有些网页的商品列表不是一次全部加载的,你滚动到底部,它才去请求服务器加载更多。

你的自动化流程只取了第一屏的数据,页面其实有十几屏,但你没抓到。因为"标准流程"不知道页面是"懒加载"的。


一、先判断页面用的是哪种加载方式

加载方式特征检测方法
传统分页页面底部有"1 2 3 … 下一页"直接看页面
无限滚动滚到底自动加载更多,没有分页器滚到底,看页面高度是否变长
点击"加载更多"有个"查看更多"按钮查页面有无这个按钮
Ajax动态刷新点筛选条件后局部刷新,不整页跳转看URL变不变

二、无限滚动的处理(最常见)

小红书、抖音、微博等平台都用这种。

店群矩阵自动化突破运营极限!

核心思路

不用做翻页。改滚动。

# 方案1:用JS滚动上次高度=0当前高度=获取当前页面高度()采集数据=[]最大滚动次数=50# 防无限循环滚动次数=0条件循环(当前高度>上次高度 且 滚动次数<最大滚动次数):上次高度=当前高度# 滚动到页面底部Python代码:driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")# 等待新数据加载固定等待(2)# 把当前页面的商品都取了获取相似元素列表("商品卡片")->新卡片 遍历列表(新卡片,卡片):数据=提取商品信息(卡片)如果 数据 不在 采集数据 中:# 去重采集数据.append(数据)输出日志(f"已采集{len(采集数据)}条")# 更新高度当前高度=获取当前页面高度()滚动次数+=1

关键:用"页面高度是否还在增加"作为是否滚到底的判断。高度不增加了,说明数据加载完了。


三、"点击加载更多"的处理

比无限滚动简单:

加载次数=0最大加载=30条件循环(True):判断元素是否存在("加载更多按钮")->有按钮 如果不满足 有按钮:输出日志("没有更多了")跳出循环 如果 加载次数>=最大加载:输出日志("达到最大加载次数")跳出循环 点击元素("加载更多按钮")固定等待(3)# 等新数据加载加载次数+=1

四、Ajax请求拦截(进阶方案)

有些页面滚动后会发Ajax请求获取JSON数据。直接拦截这个JSON,比解析HTML高效得多。

在浏览器里查看Ajax请求

F12 → Network → XHR标签 → 滚动页面 → 看哪些请求返回了数据。

很多接口会直接返回结构化的JSON:

{"code":0,"data":{"items":[{"id":"123","title":"商品A","price":128},...],"hasMore":true,"nextCursor":"abc123"}}

在影刀里模拟Ajax请求

拿到接口URL后,直接在影刀里发HTTP请求:

temu店群自动化报活动案例

# 不需要滚动页面!直接调接口cursor=""has_more=True采集数据=[]条件循环(has_more):URL=f"https://api.example.com/feed?cursor={cursor}&count=50"HTTP请求(GET,URL)->响应 data=响应.json()items=data["data"]["items"]采集数据.extend(items)has_more=data["data"]["hasMore"]cursor=data["data"]["nextCursor"]输出日志(f"已采集{len(采集数据)}条")固定等待(1)# 接口调用间隔

这样比页面滚动快得多,而且不需要和DOM打交道。


五、动态筛选的处理

有些店铺后台的筛选条件点完后数据是Ajax刷新的,URL不变。

# 选择筛选条件点击元素("日期筛选_今天")# 不要等页面跳转,等数据区域刷新# 因为URL不变,不能用"等待元素出现"(元素本来就在)# 用JS监听DOM变化Python代码:fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.common.byimportBy# 等表格行变化old_rows=len(driver.find_elements(By.CSS_SELECTOR,".table-row"))# 等新行出现WebDriverWait(driver,10).until(lambdad:len(d.find_elements(By.CSS_SELECTOR,".table-row"))!=old_rows)

六、通用适配策略

defsmart_collection():"""自动判断页面类型并采取对应的采集策略"""# 检测1:有分页按钮吗?如果 元素存在("页码器"):使用分页模式采集()# 检测2:有"加载更多"按钮吗?否则如果 元素存在("加载更多按钮"):使用点击加载模式()# 检测3:滚动后页面高度变化吗?否则:使用无限滚动采集()

你的采集流程不需要预先知道页面是什么类型,让它自己判断。


作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

http://www.jsqmd.com/news/991260/

相关文章:

  • Batocera.linux:让旧硬件重获新生,打造终极复古游戏主机
  • 手把手教你用FPGA驱动24位高精度ADC ADS1256(附完整Verilog代码与SPI时序详解)
  • DFA设计指南入门:从源头降低生产不良率
  • BoilR完整指南:如何将Epic、GOG等平台的游戏一键整合到Steam库中
  • Mac用户必看:如何用免费开源工具Nigate彻底解决NTFS读写难题
  • iOS 27 开发者测试版更新:相机与智能家居功能升级,新增电量标签页
  • QCMA:解放你的PS Vita,体验真正的自由内容管理
  • Findroid:3分钟打造您的终极Android个人影院
  • Calibre电子书管理终极指南:从格式转换到高效管理一站式解决方案
  • Carsim2016+Matlab联合仿真资源:MPC主动避撞+ACC自适应巡航Simulink模型(含界面截图与操作说明)
  • 正规黄金回收行业科普全解 - 润富黄金回收
  • MediaMTX:一站式实时流媒体路由解决方案
  • 微信单聊自动回复脚本:Node.js调用文心一言API实现即时应答
  • 如何解决华硕笔记本卡顿问题:G-Helper轻量控制工具完整指南
  • 终极指南:如何使用Python高效读取通达信本地数据
  • 如何零代码高效制作专业H5页面?开源可视化编辑器h5maker实战指南
  • 小程序开发周期多久?为什么别人 7 天上线,你要 1 个月?
  • 百度网盘高速下载终极指南:如何绕过限速获取真实下载地址
  • 影刀RPA进阶教程_代理IP配置与网络环境管理
  • 新手也能看懂的CTF逆向迷宫题:用IDA Pro分析一个‘游戏化’的reverse_re3
  • 巧用Cookie机制实现自动化测试中的验证码与登录绕过
  • 狂揽 6.2 万 Star!又一款开源的「AI 工作台」在 GitHub 上爆火了。。。
  • 基于单片机控制的多模式智能冰箱设计—冷藏、速冷、省电与自动化霜功能实现
  • 如何快速使用Qwen-Image-Layered:从图片上传到PSD导出的完整指南
  • 2026青岛门窗怎么选不踩坑?本地人真实口碑推荐的五大实力品牌 - GrowthUME
  • 正规黄金回收科普全文 - 润富黄金回收
  • 苹果手表 watchOS 27 首个开发者测试版:“对讲机”应用悄然移除且无法重装
  • 技术深度解析:AIri自托管AI伴侣容器化部署与可观测性架构实践
  • 2026年最新黄金回收价格行情分析 - 润富黄金回收
  • 计算机毕业设计之基于BERT的文本情感识别算法研究与实现