You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA读取XMLHTTP请求响应DOM结构匹配异常问题咨询

解决VBA中XMLHTTP返回DOM与浏览器不一致的问题

哈哈,这个坑我之前踩过!你遇到的DOM结构不一致的情况,本质是浏览器自动修正HTML和MSHTML严格解析原始文本的差异导致的——浏览器开发者工具里看到的<a>是<aside>子元素,那是浏览器帮你修正了不规范的原始HTML(比如未闭合标签、错误嵌套);但XMLHTTP拿到的是服务器返回的原始HTML字符串,Microsoft HTML Library解析时会严格按原始文本构建DOM,不会做自动修正,所以实际<a>和<aside>是同级关系。

修正后的代码实现

既然已经验证了同级定位的逻辑可行,我给你调整了代码,用更稳定的方式获取目标<a>标签的title属性(也就是博彩商名称):

Sub SendRequest()
    Dim XMLHTTP As Object
    Dim htmlDoc As MSHTML.HTMLDocument
    Dim targetLink As MSHTML.HTMLAnchorElement
    
    ' 初始化XMLHTTP请求
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
    XMLHTTP.Open "GET", "替换为你的目标URL", False
    XMLHTTP.send
    
    ' 加载原始HTML到MSHTML文档对象
    Set htmlDoc = New MSHTML.HTMLDocument
    htmlDoc.body.innerHTML = XMLHTTP.responseText
    
    ' 方法1:用CSS选择器直接定位aside的同级a标签(推荐,更简洁)
    Set targetLink = htmlDoc.querySelector("aside + a") ' 匹配紧跟在aside后的第一个a标签
    If Not targetLink Is Nothing Then
        Debug.Print "博彩商名称:" & targetLink.title
    Else
        Debug.Print "未找到目标链接"
    End If
    
    ' 方法2:手动遍历同级节点(应对复杂空白文本节点的情况)
    ' Dim asideElem As MSHTML.HTMLElement
    ' Set asideElem = htmlDoc.querySelector("aside")
    ' If Not asideElem Is Nothing Then
    '     Set targetLink = asideElem.nextSibling
    '     ' 跳过空白文本节点,找到真正的a标签
    '     Do While Not targetLink Is Nothing And targetLink.tagName <> "A"
    '         Set targetLink = targetLink.nextSibling
    '     Loop
    '     If Not targetLink Is Nothing Then
    '         Debug.Print "博彩商名称:" & targetLink.title
    '     End If
    ' End If
    
    ' 清理对象
    Set targetLink = Nothing
    Set htmlDoc = Nothing
    Set XMLHTTP = Nothing
End Sub

实用小技巧

你可以把XMLHTTP.responseText输出到一个文本文件里(比如执行Open "C:\temp\raw_html.txt" For Output As #1: Print #1, XMLHTTP.responseText: Close #1),查看服务器返回的原始HTML结构,这样就能直观看到<a>和<aside>的真实关系,再也不会被浏览器修正后的DOM误导啦!

内容的提问来源于stack exchange,提问作者Ryszard Jędraszyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:54:58