Use getElementById no HTMLElement em vez de HTMLDocument
Eu tenho brincado com dados de raspagem de páginas da web usando VBS / VBA.
Se fosse o Javascript, eu estaria longe como é fácil, mas não parece ser tão direto no VBS / VBA.
Este é um exemplo que eu fiz para uma resposta, funciona, mas eu tinha planejado acessar os nós filhos usandogetElementByTagName
mas eu não consegui descobrir como usá-los! oHTMLElement
objeto não tem esses métodos.
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
Eu tenho olhado para oHTMLElement.document
propriedade, vendo se é como um fragmento do documento, mas é difícil trabalhar com ou simplesmente não é o que eu penso
Dim Fragment As HTMLDocument
Set Element = Document.getElementById("example") ' This works
Set Fragment = Element.document ' This doesn't
Isso também parece uma maneira longa e sem fôlego de fazê-lo (embora isso geralmente seja o caminho para o vba imo). Alguém sabe se existe uma maneira mais simples de encadear funções?
Document.getElementById("target").getElementsByTagName("tr")
seria fantástico...