2013-02-13 72 views
7

使用VB.net或c#,如何獲取生成的HTML源代碼?使用c#或vb.net獲取最終生成的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> 
+1

使用WebBrowser控件。 – KF2 2013-02-13 06:23:15

+0

你有一個例子嗎?你嘗試過之前是否做過它,但無法讓它起作用? – 2013-02-13 06:25:15

回答

2

的文檔可以使用WebKit.NET

Look here官方教程

這不僅可以獲取源代碼,還可以通過pageload事件處理javascript。

webKitBrowser1.Navigate(MyURL) 

然後,處理DocumentCompleted事件,以及:

private documentContent = webKitBrowser1.DocumentText 

編輯 - 這可能是更好的開源的WebKit選項:http://code.google.com/p/open-webkit-sharp/

+0

+1,我認爲這裏的「需要」太強大了 - 建在WebBrowser甚至PhantomJS中都可以用來做同樣的事情。 – 2013-02-13 06:26:37

+0

修正了,謝謝Alexei – 2013-02-13 06:28:08

+1

webkit給我的源代碼HTML而不是最終生成的。 – 2017-02-07 18:24:14

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代碼,您有兩種方式:

運行流動代碼後 webBrowser1_DocumentCompleted事件
StringBuilder htmlcode = new StringBuilder(); 
      foreach (HtmlElement item in webBrowser1.Document.All) 
      { 
       htmlcode.Append(item.InnerHtml); 
      } 
  1. 編寫JavaScript代碼返回document.documentElement.innerHTML和使用InvolkeScript函數返回結果:
var htmlcode = webBrowser1.Document.InvokeScript("javascriptcode"); 
+0

非常感謝,但它返回的源代碼不是生成的源代碼 – 2013-02-13 07:31:14

+0

獲取動態生成的代碼如果添加更多您想要執行的操作的細節將顯示解決方案(或添加一些額外的代碼) – KF2 2013-02-13 07:34:59

+0

嗨,我已經約會了我的問題 - 謝謝你 – 2013-02-13 08:00:26

0

您可以使用此代碼:

webBrowser1.Document.Body.OuterHtml