9

VB.net または c# を使用して、生成された HTML ソースを取得するにはどうすればよいですか?

ページの html ソースを取得するには、以下を使用できますが、生成されたソースは取得されません。ブラウザーの JavaScript によって動的に追加された html は含まれません。最終的に生成された HTML ソースを取得するにはどうすればよいですか?

ありがとう

WebRequest req = WebRequest.Create("http://www.asp.net"); 
WebResponse res = req.GetResponse(); 
StreamReader sr = new StreamReader(res.GetResponseStream()); 
string html = sr.ReadToEnd();

以下でこれを試すと、JavaScript コードが挿入されていないドキュメントが返されます

Public Class Form1

    Dim WB As WebBrowser = Nothing

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        WB = New WebBrowser()
        Me.Controls.Add(WB)
        AddHandler WB.DocumentCompleted, AddressOf WebBrowser1_DocumentCompleted


        WB.Navigate("mysite/Default.aspx")

    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs)


        'Dim htmlcode As String = WebBrowser1.Document.Body.OuterHtml()
        Dim s As String = WB.DocumentText

    End Sub
End Class

HTML が返されました

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

</head>
<body>
    <form id="form1" runat="server">
    <div id="center_text_panel">
    //test text  this text should be here
    </div>
    </form>
</body>
</html>

    <script type="text/javascript">

        document.getElementById("center_text_panel").innerText = "test text";


    </script>
4

3 に答える 3

2

WebKit.NETを使用できます

公式チュートリアルはこちら

これは、ソースを取得するだけでなく、pageload イベントを通じて JavaScript を処理することもできます。

webKitBrowser1.Navigate(MyURL)

次に、DocumentCompleted イベントを処理します。

private documentContent = webKitBrowser1.DocumentText

編集- これは、より良いオープン ソース WebKit オプションかもしれません: http://code.google.com/p/open-webkit-sharp/

于 2013-02-13T06:24:21.960 に答える
1

webbrowserフォームにコントロールを配置するだけで、コードを流すことができます:

 webBrowser1.Navigate("YourLink");

     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
           string htmlcode= webBrowser1.Document.Body.InnerHtml;//Or Each Filed Or element..//WebBrowser.DocumentText
        }

編集済み

Javaスクリプトコードによって動的に生成されたhtmlコードも取得するには、次の2つの方法があります。

  1. webBrowser1_DocumentCompletedイベント後に流れるコードを実行する
 StringBuilder htmlcode = new StringBuilder();
            foreach (HtmlElement item in webBrowser1.Document.All)
            {
                htmlcode.Append( item.InnerHtml);
            }
  1. document.documentElement.innerHTML結果を返すための InvolkeScript 関数を返し、使用するための JavaScript コードを記述します。
   var htmlcode = webBrowser1.Document.InvokeScript("javascriptcode");
于 2013-02-13T06:28:44.383 に答える