VBS/VBA を使用して Web ページからデータをスクレイピングして遊んでいます。
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")
素晴らしいだろう...