2011-02-25 100 views
1

我需要在执行本文档中的JavaScript代码之后解析html代码。 我使用webBrowser控件下载和控制html。C#使用javascript解析html

例如,我在我的html代码中有一些javascript。

<script type="text/javascript" src="http://site.com/script.js"></script> 

感谢您的回答。

P.S. 我的意思是:我必须用一些文本解析所有的代码才能返回javascript。所以,我只能在执行javascript后解析文档。如果我需要某些部分的动态内容,这些内容将与javascript一起添加。

新增

我用JavaScript生成的内容的内容。我跳过这一个,因为我一直在寻找一些内容是它和JavaScript生成的iframe中。

现在我还有一个问题。在我的文档中,我有几个iframe。我试图从一些框架中获取内容。在接下来的方式:

 var htmlcol = webBrowser1.Document.Window.Frames; 
     foreach (HtmlWindow item in htmlcol) 
     { 
      try 
      { 
       Console.Write(item.Name); 
      } 
      catch (System.Exception ex) 
      { 
       MessageBox.Show("Something wrong"); 
      } 

     } 

但这种方式我有例外: 'System.UnauthorizedAccessException的'。我怎样才能访问框架的HTML?

P.P.S.索里对我的英语不好:)

+0

你能具体谈谈吗? – TheBoyan 2011-02-25 18:41:22

+1

你究竟在求什么人帮你做?阅读html?解析

1

我认为你会使用使用WebBrowserDocument属性表示DOM为有更好的体验。

您可以遍历Body的嵌套元素,也可以使用GetElementByIdGetElementsByTagName找到您想要的值。

DOM应该通过JavaScript在页面中所做的更改自动更新。

+0

谢谢。有用。也许并已经工作过。我跳过了这个,因为我正在寻找一些在iframe中显示的内容。这是在JavaScript中生成的。 – lc0 2011-02-25 21:35:50

0

请为您的问题阅读Phantomjs,并使用setTimeOut打开页面。

这可以魔神像这样:

var page = require('webpage').create(); 

page.open("https://sample.com", function(){ 
    page.evaluate(function(){ 
     // Execution somethings before page load. for Example: 
     localStorage.setItem("something", "whatever");// Set LocalStorage for browser before open 
    }); 

    page.open("https://sample.com", function(){ 
     setTimeout(function(){ 
      console.log(page.content); //page source 

      // Where you want to save it  
      page.render("screenshoot.png") 

      // You can access its content using jQuery 
      var fbcomments = page.evaluate(function(){ 
       return $("body").contents().find(".content") 
      }) 

      phantom.exit(); 
     },10000) 
    });  
});