VBA使用MSXML2.XMLHTTP.6.0或Selenium实现等待指定文本出现
Windows 11替代IE的VBA动态页面抓取实现方案
首先明确:目标站点为JS动态渲染页面,MSXML2.XMLHTTP.6.0仅能获取服务端返回的初始静态源码,无法等待客户端JS执行完成加载动态内容,因此优先提供你已安装的Selenium适配方案,逻辑完全对齐你原有IE代码的等待规则:
前置配置要求
- 已安装与你的浏览器版本匹配的Selenium驱动(Chrome/Edge均可),驱动路径已添加到系统环境变量
- VBA编辑器中已引用Selenium类型库
完整实现代码
Dim t As Date Dim fTextFound As Boolean Const MAX_WAIT_SEC As Long = 3 '<==可根据需要调整等待时长 Dim myUrl As String myUrl = "https://finbox.com/NASDAQGS:AMZN/models/dcf-growth-exit-10yr" ' 初始化Selenium驱动,这里以Chrome为例,用Edge的话替换为New EdgeDriver Dim driver As New ChromeDriver driver.Get myUrl ' 可设置是否显示浏览器窗口,True为显示,False为后台运行 driver.Visible = True t = Timer Do DoEvents On Error Resume Next ' 获取当前页面完整渲染后的HTML源码 sPageHTML = LCase(driver.PageSource) If InStr(sPageHTML, "fair value") > 0 Then fTextFound = True If Timer - t > MAX_WAIT_SEC Then Exit Do On Error GoTo 0 Loop While fTextFound = False If fTextFound = True Then ' 此处写入你后续的提取逻辑 Debug.Print "已找到目标文本,开始执行数据提取" End If ' 任务完成后关闭驱动 driver.Quit Set driver = Nothing
其他方案说明
如果你要使用HTTP请求类组件实现,需要搭配无头浏览器工具(如Chromium无头模式)处理JS渲染,配置复杂度远高于Selenium方案,不推荐使用。
内容的提问来源于stack exchange,提问作者GOMAD
相关产品推荐
相关产品推荐

