Ottieni il sorgente html finale generato usando c # o vb.net

usando VB.net o c #, come ottengo la sorgente HTML generata?

Per ottenere il sorgente html di una pagina posso usare questo sotto ma questo non otterrà il sorgente generato, non conterrà alcuno dell’html che è stato aggiunto dynamicmente dal javascript nel browser. Come ottengo la sorgente HTML finale generata?

Grazie

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

se provo questo sotto poi restituisce il documento senza il codice JavaScript iniettato

 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 restituito

       
//test text this text should be here
document.getElementById("center_text_panel").innerText = "test text";

Puoi usare WebKit.NET

Guarda qui per tutorial ufficiali

Questo non solo può catturare la fonte, ma anche elaborare javascript attraverso l’evento pageload.

 webKitBrowser1.Navigate(MyURL) 

Quindi, gestisci l’evento DocumentCompleted e:

 private documentContent = webKitBrowser1.DocumentText 

Modifica : questa potrebbe essere l’opzione WebKit open source migliore: http://code.google.com/p/open-webkit-sharp/

Basta inserire un controllo del webbrowser nel modulo e il codice che scorre:

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

Modificato

per ottenere anche il codice html generato in modo dinamico dal codice di script java hai due modi:

  1. eseguire il codice che scorre dopo webBrowser1_DocumentCompleted evento webBrowser1_DocumentCompleted
  StringBuilder htmlcode = new StringBuilder(); foreach (HtmlElement item in webBrowser1.Document.All) { htmlcode.Append( item.InnerHtml); } 
  1. scrivere un codice javascript per restituire document.documentElement.innerHTML e utilizzare la funzione InvolkeScript per restituire il risultato:
  var htmlcode = webBrowser1.Document.InvokeScript("javascriptcode"); 

Puoi usare questo codice:

 webBrowser1.Document.Body.OuterHtml