レンダリングされた HTML を URL から取得するにはどうすればよいですか?
ニュース、スケジュール、およびその他の動的コンテンツの形式で Web 上の更新をチェックするこのプログラムが必要だとしましょう (コンテンツは HTML ソースでは利用できません) 。
ブラウザで読んでいるかのように、完全なドキュメントを含むレンダリングされた ( full ) HTML を取得するにはどうすればよいですか?
次の例は、動的ページの例です。
動的サイトに関してはいつものように - 上記のテキストはソース コードのどこにもありません - ブラウザを介してのみ表示されます。
もちろん、WebClient と DownloadString ("www.example.com") を使用して HTML ページをダウンロードできますが、それではソース ページ (静的テキスト) しか得られません。
Javascript が要素を追加し、jQuery のセットアップが完了した後、最終的なドキュメントを取得したいとします。
Dim Client As New WebClient
Dim HTML = WebClient.DownloadString("http://www.example.com")
より多くの HTML にアクセス/解析するには、MSHTML.dll を使用して、ページ、要素、要素ごとに移動できるようにすることもできます。
Dim Client As New WebClient
Dim Data As Stream = Client.OpenRead(New Uri("http://example.com"))
Dim Reader As New StreamReader(Data)
Dim HTML As String = Reader.ReadToEnd
Dim Document As IHTMLDocument2 = DirectCast(New mshtml.HTMLDocument(), IHTMLDocument2)
Document.write(HTML)
Dim Elements As IHTMLElementCollection = Document.all
For Each Element As IHTMLElement In Elements
'here I can access things like the elements ids, tag innerHTML and so forth
Next
しかし、どちらも実際にレンダリングされたドキュメントを提供しません。
WebBrowser コントロールを作成することはできますが、URL に移動し、それを介してページのコンテンツにアクセスしますが、可能であれば、それは私がやりたい方法ではありません。