使用c#或vb.net获取最终生成的html源代码

使用VB.net或c#,如何获得生成的HTML源代码?

为了得到一个页面的html源代码,我可以在下面使用它,但是这不会得到生成的源代码,它将不包含由浏览器中的javascriptdynamic添加的任何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> 

你可以使用WebKit.NET

在这里寻找官方教程

这不仅可以获取源代码,还可以通过pageload事件处理javascript。

 webKitBrowser1.Navigate(MyURL) 

然后,处理DocumentCompleted事件,并:

 private documentContent = webKitBrowser1.DocumentText 

编辑 – 这可能是更好的开源WebKit选项: http : //code.google.com/p/open-webkit-sharp/

只要把一个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脚本代码dynamic生成的html代码,您有两种方法:

  1. webBrowser1_DocumentCompleted事件之后运行stream程代码
  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"); 

你可以使用这个代码:

 webBrowser1.Document.Body.OuterHtml