Html 使用VBA获取网页内iframe内脚本标记中的数据

Html 使用VBA获取网页内iframe内脚本标记中的数据,html,vba,iframe,web-scraping,Html,Vba,Iframe,Web Scraping,我正在使用VBA从html文档中提取数据。文档中有一个iframe。我可以使用web浏览器的“检查元素”查看文本;但是,我无法使用VBA实现它。这是我正在使用的代码,它与其他元素配合得很好 Sub NewMain() Dim i As Integer Dim IE As InternetExplorer Dim sc As MSHTML.IHTMLElementCollection Dim scObj As MSHTML.IHTMLGenericElement Set objShell =

我正在使用VBA从html文档中提取数据。文档中有一个iframe。我可以使用web浏览器的“检查元素”查看文本;但是,我无法使用VBA实现它。这是我正在使用的代码,它与其他元素配合得很好

Sub NewMain()

Dim i As Integer
Dim IE As InternetExplorer

Dim sc As MSHTML.IHTMLElementCollection
Dim scObj As MSHTML.IHTMLGenericElement

Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
Debug.Print "ie count " & IE_count
For x = 0 To (IE_count - 1)
   On Error Resume Next    
     my_URL = objShell.Windows(x).Document.Location
     my_title = objShell.Windows(x).Document.title


 If my_URL like "http://www.loopnet.com/xNet/Mainsite/Report/Report.aspx?"      & "*" Then

       Debug.Print "You have the document"
       Set IE = objShell.Windows(x)
       Set mydoc = IE.Document

       Set sc = mydoc.getElementsByTagName("script")
           For Each scObj In sc
                Debug.Print scObj.innerText
           Next


   End If
Next


End Sub
下面是我试图阅读的html。我试图在body元素内部的脚本标记中获取数据;尽管如此,我还是认为我可以访问html class=“dj_ie je_ie10 dj_contentbox”id=“ln”项。然而,我不知道该怎么做。任何帮助都将不胜感激

    <iframe name="reportFrame" width="1100" height="1100" class="report-  
     frame" id="reportFrame" src="http://reporting.loopnet.com"
     frameborder="0" scrolling="no" style="height: 2530px;"></iframe>

     <!DOCTYPE html>
     <html class="dj_ie dj_ie10 dj_contentbox" id="ln">
       <head>...</head>
       <body>...</body>
     </html>
    </iframe>

...
...

主要网站是开源的。他们列出了可供出售和租赁的房地产。查看该站点,选择感兴趣的属性,然后单击“创建报告”。这个html片段和我试图从中提取数据的是“列表比较报告”

无法在上面的
脚本中看到您的
标记

你可以从

Dim a As Object
Set a = ie.document.frames("reportFrame").document.querySelector("#ln")

这是基于抢夺第一场比赛。查看
.querySelector
all以返回
nodeList
,前提是需要多个元素,而不是第一个元素

有关更多讨论,请参见以下SO问题的答案:

如果您无法提供访问您试图抓取的网页的凭据,则至少提供一个网页URL,该URL可以复制情况,但不需要凭据就可供普通公众公开使用。Jeeped,感谢您的指导。这是我第一次使用Stack,我不太确定应该包括什么。
Set a = ie.document.frames("reportFrame").document.querySelector("#ln script")