将对象设置为 HTML iFrame 并访问其文档中的元素

Setting an Object to HTML iFrame and access the elements inside its document

我正在尝试抓取一个结构如下的内联网网站(因为内联网我无法共享 link,对此感到抱歉):

<html>
    <body>
        <iframe id="myIframe">#document</iframe>
    </body>
</html>

基本上,我要查找的信息都在 iframe 对象的文档中。在网页中,如果我尝试通过 JavaScript 以这种方式访问​​它,我可以做到:

document.getElementById("myIframe").contentDocument.getElementsByTagName("div")

但是,如果我尝试在 VBA 中执行相同的操作,我将无法做到,因为对象 Set test2 = oHtml.getElementById("myIframe")Nothing

我定义 test2 的方式如下:

首先,我通过XMLHTTP请求获得了网页的HTML文档:

Dim XMLHTTP As Object, oHtml As Object, pontod As Object

    On Error Resume Next
    Set oHtml = New HTMLDocument
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", websiteLink, False
        .send
        oHtml.body.innerHTML = .responseText
    End With

因此,我已将 test2 声明为对象并尝试将其设置如下:

Dim test2 As Object
Set test2 = oHtml.getElementById("myIframe")

同样,问题是上面的 test2 设置为 Nothing,而如果我尝试在 JavaScript 上(直接在网页上)做同样的事情,情况就不是这样了。

这可能取决于我在 VBA 中获得的 HTML 文档来自 WINHTTP.WinHTTPRequest.5.1 请求这一事实吗?有谁知道解决这个问题并获得 myIframe 的文档吗?

P.s。我知道工作不好 "on a black box" 但不幸的是这是一个内网;请随时询问您是否需要任何其他信息(只要我能提供:))

您是否等待 oHTML 中的文档加载和呈现?

您还应该验证从 WinHTTPRequest 获得的来源是否与您在 javascript 中使用的来源相同。