1

レンダリングされた 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 に移動し、それを介してページのコンテンツにアクセスしますが、可能であれば、それは私がやりたい方法ではありません。

4

1 に答える 1

4

コンテンツを動的にロードする Web ページの場合、Web ページ スクリプトによってコンテンツをフェッチするために呼び出されている URL を検出する必要があります。URL を表示するには、fiddlerなどのツールを使用します。その情報を入手したら、 を使用WebClientしてコンテンツをフェッチします。

于 2013-09-11T16:45:23.513 に答える