影刀RPA 动态加载网页的稳定采集三策略

发布时间:2026/7/13 0:45:26

影刀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监听。

相关新闻

如何利用etmem与cslide引擎实现内存垂直扩展?终极AEP高性能存储解决方案

如何利用etmem与cslide引擎实现内存垂直扩展?终极AEP高性能存储解决方案

2026/7/13 0:45:26

如何利用etmem与cslide引擎实现内存垂直扩展?终极AEP高性能存储解决方案 【免费下载链接】etmem the memory vertical expansion technology that can achieve the purpose of memory capacity expansion and memory cost reduction. 项目地址: https://gitcode.c…

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

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

2026/7/13 0:45:26

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

Kimi    LeetCode 3544. 子树反转和 C语言实现

Kimi LeetCode 3544. 子树反转和 C语言实现

2026/7/13 0:35:26

以下是 LeetCode 3544. 子树反转和 的 C 语言实现。解题思路本题使用树形 DP 记忆化搜索。状态定义:dp(u, steps, inv) - u:当前节点 - steps:距离最近的一次祖先反转已经经过了多少步(上限为 k)。当 steps k 时&…

MA12070与PIC18F46K40打造高效D类音频放大器方案

MA12070与PIC18F46K40打造高效D类音频放大器方案

2026/7/13 2:35:32

1. 项目背景与核心器件选型在当今音频设备市场,消费者对便携性与音质的要求越来越高。传统AB类放大器虽然音质出色,但效率低下导致设备笨重;而普通D类放大器虽效率高,却常因电磁干扰(EMI)问题影响音质。MA12070PIC18F46K40的组合恰…

Win10系统安装全攻略:从U盘启动到驱动优化的完整教程

Win10系统安装全攻略:从U盘启动到驱动优化的完整教程

2026/7/13 2:35:32

很多朋友在电脑使用过程中都会遇到系统卡顿、蓝屏或中毒等问题,这时候重装系统就成了最直接的解决方案。但一想到要找电脑店花几百元重装,很多人就望而却步了。其实Win10系统安装并不复杂,只要掌握正确方法,完全可以自己动手完成&…

网络安全深度洞察:穿透数字迷雾,构建下一代防御体系

网络安全深度洞察:穿透数字迷雾,构建下一代防御体系

2026/7/13 2:35:32

一、网络安全定义(动态攻防视角) 网络安全的本质,是在数字资产的暴露面与攻击者的入侵路径之间,建立持续性的不对称优势。它所保护的对象可以精炼为三个层面: 表层资产:应用程序、服务器、数据库、终端设备…

微信8.0.31数据库密码逆向:IMEI写死机制与SQLCipher加密破解

微信8.0.31数据库密码逆向:IMEI写死机制与SQLCipher加密破解

2026/7/13 2:35:32

1. 项目概述:从一份加密文件到可读的聊天记录如果你曾经因为手机故障需要恢复微信聊天记录,或者出于技术研究的目的,尝试过直接访问手机里那个名为EnMicroMsg.db的数据库文件,那你大概率会碰壁。这个文件是微信在本地存储聊天记录…

AI Agent开发实战:从RAG原理到LangChain应用完整指南

AI Agent开发实战:从RAG原理到LangChain应用完整指南

2026/7/13 2:35:32

1. 先搞清楚 AI Agent 开发到底需要哪些核心能力如果你刚开始接触 AI Agent,最容易被各种概念和框架绕晕。其实从实际开发角度看,AI Agent 的核心能力可以拆解为三个层次:第一层是基础编程能力。Python 是绕不开的,但不需要你成为…

Java移位运算:补码的魔法让负数秒变正数,你还在傻傻算原码?

Java移位运算:补码的魔法让负数秒变正数,你还在傻傻算原码?

2026/7/13 2:25:31

正数的反码是其本身 负数的反码是这样得到的, 在其原码的基础之上, 符号位保持不变, 其余各个 bit 位进行取反操作。 [+5](原码)= [](反码) [ …

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/12 0:03:42

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/12 0:03:42

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/12 0:03:42

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)在口腔微生物分子机制研究中,SepM 蛋白酶是调控变异链球菌群体感应、致龋菌素合成的核心功能蛋白,体外功能验证、抗体开发均依赖高纯度可溶性 SepM 蛋白。当前原核表达体系针对 SepM 存在三大技…

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

2026/7/13 0:05:25

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…