发布时间:2026/7/13 0:45:27
影刀RPA 动态加载网页的稳定采集三策略 影刀RPA 动态加载网页的稳定采集三策略作者林焱什么情况用这个打开一个网页数据是慢慢长出来的——先出骨架然后一条条数据刷出来有时候还要滚动才加载。你的【获取元素列表】在这一刻抓到了10条下一刻可能就是50条。到底什么时候才算加载完成什么时候开始采集最稳动态网页的采集难点不在抓数据在于判断时机。抓早了数据不全抓晚了浪费时间。这篇文章给你三种稳定采集策略覆盖Ajax、懒加载、虚拟滚动等所有动态加载场景。怎么做策略一等待数据稳定最常用核心思想连续两次检测到的数据量相同说明加载完毕。defwait_for_data_stable(driver,selector,stable_count2,max_wait30): 等待数据量稳定 stable_count: 连续N次数量不变才算稳定 last_count0stable_times0for_inrange(max_wait*2):elementsdriver.find_elements(By.CSS_SELECTOR,selector)current_countlen(elements)ifcurrent_countlast_countandcurrent_count0:stable_times1ifstable_timesstable_count:returnelementselse:stable_times0last_countcurrent_count time.sleep(0.5)returndriver.find_elements(By.CSS_SELECTOR,selector)# 超时了也返回策略二监听网络请求完成更精确的做法——等Ajax请求全部完成defwait_for_ajax_complete(driver,timeout15):等待所有Ajax请求完成jQuery/XMLHttpRequest# 注入Ajax监听driver.execute_script( window.__ajaxActive 0; var origXHR window.XMLHttpRequest.prototype; var origOpen origXHR.open; var origSend origXHR.send; origXHR.open function() { this._active true; return origOpen.apply(this, arguments); }; origXHR.send function() { window.__ajaxActive; this.addEventListener(loadend, function() { window.__ajaxActive--; }); return origSend.apply(this, arguments); }; )# 等待活跃请求数降到0for_inrange(timeout*10):activedriver.execute_script(return window.__ajaxActive || 0)ifactive0:time.sleep(0.3)# 确认一下activedriver.execute_script(return window.__ajaxActive || 0)ifactive0:returnTruetime.sleep(0.1)returnFalse策略三MutationObserver监听DOM变化最精确的方式——监听特定容器内的DOM变化defwait_for_dom_stable(driver,container_selector,idle_ms500,timeout15): 监听DOM变化连续idle_ms毫秒没有新变化才算稳定 driver.execute_script(f window.__domStable false; window.__domTimer null; var target document.querySelector({container_selector}); if (!target) return; var observer new MutationObserver(function() {{ window.__domStable false; clearTimeout(window.__domTimer); window.__domTimer setTimeout(function() {{ window.__domStable true; }},{idle_ms}); }}); observer.observe(target, {{ childList: true, subtree: true }}); // 初始设置定时器 window.__domTimer setTimeout(function() {{ window.__domStable true; }},{idle_ms}); )# 等待稳定标志for_inrange(timeout*10):stabledriver.execute_script(return window.__domStable)ifstable:returnTruetime.sleep(0.1)returnFalse有什么坑坑一数据一直在变永远不会稳定现象实时更新的数据看板数据一直在刷新永远等不到稳定。解决设定最大等待时间超时就按当前数据采集。或者用采集前N条策略不等全部加载。坑二虚拟滚动的数据看到才存在现象DOM里只有可见区域的20条数据上面的已经移除、下面的还没生成。解决边滚动边采集——滚一段、等加载、采集、记录位置、继续滚。坑三等待了Ajax但数据是WebSocket推的现象Ajax监听显示完成了但数据还在通过WebSocket进来。解决这种情况下只能用策略一等数据量稳定或策略三DOM变化监听。总结三种策略的适用场景——绝大多数情况用策略一等数据量稳定Ajax频繁的页面用策略二等网络请求完成实时更新的看板用策略三DOM监听。

相关新闻

2026/7/13 0:45:27

影刀RPA 函数参数详解:位置参数、关键字参数、默认值

影刀RPA 函数参数详解:位置参数、关键字参数、默认值作者:林焱什么情况用 你在影刀RPA的Python代码块里写函数,发现参数传得越来越乱——有的按顺序传、有的按名字传、有的有默认值有的没有。调用的时候参数太多,记不住哪个是哪个…

2026/7/13 2:05:31

基于MA12070和MKV42F64VLH16的高保真音频系统设计

1. 项目概述:基于MA12070和MKV42F64VLH16的高保真音频系统设计在便携式音频设备和智能家居快速发展的今天,如何在小体积设备中实现高功率、低失真的音频输出成为工程师面临的关键挑战。MA12070作为英飞凌推出的高效D类音频放大器IC,配合MKV42…

2026/7/13 2:05:31

《迷失安狄》:彩票中奖后的人性考验与跨性别者生存现实

一口气看完4K画质神作《迷失安狄》:当人性与命运在彩票中奖后激烈碰撞如果你最近在寻找一部能触动内心、引发深度思考的电影,《迷失安狄》绝对值得你花时间细细品味。这部作品不仅仅是一个关于性别认同的故事,更是一面照出现实人性的镜子。当…

2026/7/13 2:05:31

Linux命令行与系统管理:从基础到实战的运维技能提升指南

还记得第一次面对 Linux 服务器时,那种既熟悉又陌生的感觉吗?熟悉的是它和 Windows 一样都是操作系统,陌生的是打开终端后,面对黑底白字的命令行界面,连最基本的文件操作都要重新学习。很多人把 Linux 想象得太复杂&am…

2026/7/13 2:05:31

植物大战僵尸终极修改器:3步掌握PVZ Toolkit完整游戏增强方案

植物大战僵尸终极修改器:3步掌握PVZ Toolkit完整游戏增强方案 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 还在为《植物大战僵尸》中的资源短缺而烦恼吗?PVZ Toolkit正是…

2026/7/13 2:00:31

C++高精度阶乘实现:从数组模拟到压位优化与FFT进阶

1. 项目概述:从“为什么没有”到“如何实现”在C的日常开发中,我们经常会遇到需要计算阶乘的场景,比如组合数学、概率统计,或者一些算法题。很多初学者会下意识地在标准库中寻找一个像std::factorial这样的函数,结果当…

2026/7/12 0:01:29

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/12 0:01:29

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/12 0:01:29

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/13 0:00:24

广氟 PTFE 高速线缆膜 —— 高端线缆绝缘材料新选择

PTFE高速线缆膜的基本概念与特点 PTFE 高速线缆膜是以聚四氟乙烯树脂为原料,经膨化双向拉伸制成的多孔绝缘薄膜,作为高速高频通信线缆的核心介质材料,内部形成均匀连通的微孔结构,兼具极低介电常数与介电损耗,能有效降…

2026/7/12 11:21:32

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…