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...

questionAnswers(4)

yourAnswerToTheQuestion