网页 抓取 innertext 试题(如何通过VBA抓取IFRAME中的文本?(问题描述))
优采云 发布时间: 2022-04-15 12:28网页 抓取 innertext 试题(如何通过VBA抓取IFRAME中的文本?(问题描述))
问题描述
我们的业务使用基于浏览器的操作程序进行操作。我正在自动化一个解决方案来浏览这个 网站 并在最后检索一些数据。
网站 本身就是非常重要的框架。但是,在我的过程结束时,它将我的数据填充到一个框架中,但是一个 iframe。在 网站 中也非常广泛的 JavaScript,使事情变得混乱。
获取 iframe 的 src url 并在新浏览器中打开页面(即页面显示错误文本而不是内容)。
我的问题:
如何通过 VBA 抓取 IFRAME 中的文本?
到目前为止我尝试过的事情(请随意跳过):
以特定框架中的特定 iframe 为目标,并抓取 innerhtml
With ie.document.frames(myFrameNum).document.getElementsByTagName("iframe")(1).document.body
stringResult = .innerHTML
在特定框架中定位具有 id 的特定 iframe 并获取 innerhtml
Dim iFrm As HTMLIFrame
Set iFrm = ie.document.frames(myFrameNum).document.getElementByID("iFrameID")
Debug.Print iFrm.document.body.innerText
查找 iframe 的任何实例,然后抓取它们(没有结果 - 可能是因为 iframe 嵌入在框架中?)
Dim iFrm As HTMLIFrame
Dim doc As HTMLDocument
For iterator = 0 To ie.document.all.Length - 1
If TypeName(ie.document.all(iterator)) = "HTMLIFrame" Then
Set iFrm = ie.document.all(iterator)
Set doc = iFrm.document
Debug.Print & doc.body.outerHTML
End If
Next
推荐答案
我遇到了同样的问题,我使用以下脚本得到了解决方案..
ie.document.geteLementsByTagname("iframe")(0).contentDocument .getElementsByTagname("body")(0).innertext
其他推荐答案
试试这个...
Dim elemCollection As IHTMLElementCollection
Set elemCollection = objDoc.frames("iFrameID").document.all
Debug.Print elemCollection.Item("pagemenuli-adv").innerText
其他推荐答案
我遇到了类似的问题,终于解决了:
objie.document.frames(0).document.forms(0).innertext
注意:我需要的文本在 IF 框架中。
我是新的 VBA,可以在框架中解释(0)/form(0) 0 的主体到底是什么?
如果它是帧索引或帧号(我假设),请告诉我我们如何找到帧索引(在任何 HTML 中)?