Html 使用VBA获取网页内iframe内脚本标记中的数据
我正在使用VBA从html文档中提取数据。文档中有一个iframe。我可以使用web浏览器的“检查元素”查看文本;但是,我无法使用VBA实现它。这是我正在使用的代码,它与其他元素配合得很好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 =
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")