当前位置: 首页 > 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.zskr.cn/news/1503005.html

相关文章:

  • DFA设计指南入门:从源头降低生产不良率
  • MediaMTX:一站式实时流媒体路由解决方案
  • 如何零代码高效制作专业H5页面?开源可视化编辑器h5maker实战指南
  • 百度网盘高速下载终极指南:如何绕过限速获取真实下载地址
  • 影刀RPA进阶教程_代理IP配置与网络环境管理
  • 如何快速使用Qwen-Image-Layered:从图片上传到PSD导出的完整指南
  • 正规黄金回收科普全文 - 润富黄金回收
  • 苹果手表 watchOS 27 首个开发者测试版:“对讲机”应用悄然移除且无法重装
  • 快递折扣怎么拿到?实测寄半折最省钱 - 快递物流资讯
  • 2026黄金回收行情走势分析 - 润富黄金回收
  • 2026 日照厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 如何5分钟掌握DeepMosaics:AI智能马赛克处理完整指南
  • 人机协作新时代:工业数智化迈入平台基建阶段,重构生产与工作模
  • 鸿研服务器专业供应商评价与2026年中推荐 - 品牌推荐大师
  • 智能游戏助手:一键提升英雄联盟体验的完整指南
  • 大模型对就业结构的影响分析
  • 2026年6月10日黄金回收行情分析 - 润富黄金回收
  • 黄金回收行业科普大全 - 润富黄金回收
  • GAD-MoRE:零样本图异常检测的混合黎曼专家框架
  • 3个步骤解锁Mobaxterm中文版:一站式远程管理工具完全指南
  • 2026 威海厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • Java Swing超市库存管理教学演示包(含JDBC连接模板与图表统计)
  • AnyChat与第三方身份系统无缝对接:7步实现自定义用户认证终极指南 [特殊字符]
  • 手把手教你用STM32F429+FreeRTOS搭建开源SIP电话(附代码与避坑指南)
  • 2026天津包包回收五大商家实测排名,高价靠谱首选禹竞名奢汇 - 名奢变现站
  • 111页精品PPT | 智慧农业整体解决方案
  • 浙江永康市面上非标大门制造厂 - GrowthUME
  • 精准预测蛋白质稳定性的强大工具
  • Mootdx通达信数据接口架构解析与量化分析集成方案
  • 树莓派+MCP3008读MQ系列气体传感器的Python实操包(含接线/标定/示例)