我一直在使用 VBS/VBA 从网页中抓取数据。
如果它是 Javascript,我会很容易地离开,但它在 VBS/VBA 中似乎并不那么直接。
这是我为回答而制作的一个示例,它有效,但我曾计划使用访问子节点,getElementByTagName
但我不知道如何使用它们!该HTMLElement
对象没有这些方法。
Sub Scrape()
Dim Browser As InternetExplorer
Dim Document As HTMLDocument
Dim Elements As IHTMLElementCollection
Dim Element As IHTMLElement
Set Browser = New InternetExplorer
Browser.navigate "http://www.hsbc.com/about-hsbc/leadership"
Do While Browser.Busy And Not Browser.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set Document = Browser.Document
Set Elements = Document.getElementsByClassName("profile-col1")
For Each Element in Elements
Debug.Print "[ name] " & Trim(Element.Children(1).Children(0).innerText)
Debug.Print "[ title] " & Trim(Element.Children(1).Children(1).innerText)
Next Element
Set Document = Nothing
Set Browser = Nothing
End Sub
我一直在查看该HTMLElement.document
属性,看看它是否像文档的一个片段,但它要么难以使用,要么不是我想的那样
Dim Fragment As HTMLDocument
Set Element = Document.getElementById("example") ' This works
Set Fragment = Element.document ' This doesn't
这似乎也是一种冗长的方式(尽管这通常是 vba imo 的方式)。任何人都知道是否有更简单的方法来链接函数?
Document.getElementById("target").getElementsByTagName("tr")
会很棒...