将对象设置为 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 中使用的来源相同。
我正在尝试抓取一个结构如下的内联网网站(因为内联网我无法共享 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 中使用的来源相同。