Internet Explorerに付属のMSHTMLを使用してWebページを解析してみませんか?「MicrosoftHTMLObjectLibrary」への参照を追加する必要があります。奇妙なことに、空のHTMLDocumentオブジェクトをインスタンス化してから、最初のオブジェクトのメソッドを呼び出して、URLに基づいて新しいHTMLDocumentオブジェクトを作成する必要があります。ただし、元のオブジェクトを保持する必要があります。そうしないと、「PermissionDenied」エラーメッセージが表示され続けます。私はまだ両方をUDTに入れて、それらが互いに同じスコープに保たれるようにします。
Option Explicit
Private Type HtmlDoc
Parent As MSHTML.HTMLDocument
Main As MSHTML.HTMLDocument
End Type
Private Sub Command1_Click()
Dim URL
Dim uHTMLDoc As HtmlDoc
URL = "http://www.youtube.com/results?search_query=" & TextBox1.Text & "&suggested_categories=2%2C23%2C25&page=" & pagenum
' Source Code
GetHTMLDocumentFromURL URL, uHTMLDoc
Debug.Print uHTMLDoc.Main.documentElement.outerHTML
End Sub
Private Sub GetHTMLDocumentFromURL(ByRef the_sURL As String, ByRef the_uHTMLDoc As HtmlDoc)
With the_uHTMLDoc
Set .Parent = New MSHTML.HTMLDocument
Set .Main = .Parent.createDocumentFromUrl(the_sURL, vbNullString)
' Wait for the document to load completely.
' This is because the transfer is asynchronous.
' It is possible that this string might be different if you have another
' language than English for Internet Explorer on the
' machine where the code is executed.
Do While .Main.readyState <> "complete"
DoEvents
Loop
End With
End Sub
どのタイプの解析を実行するかはわかりませんが、GetElementById()、GetElementsByName()、GetElementsByTagName()などのHTMLDocumentクラスのさまざまなメソッドを確認してください。タイプライブラリをよく見て、少し実験してコツをつかんでください。