2013-02-13 65 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