【问题标题】:C# parsing html with javascriptC#用javascript解析html
【发布时间】:2011-02-25 18:37:16
【问题描述】:

在本文档中执行 javascript 代码后,我需要解析 html 代码。 我使用 webBrowser 控件来下载和控制 html。

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

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

感谢您的回答。

附: 我的意思是:我必须用一些可以返回 javascript 的文本来解析所有代码。所以,我只能在执行 javascript 后解析文档。因为我需要一些动态内容,这些内容将使用 javascript 添加。

已添加

我得到了 javascript 生成的内容。我跳过了这个,因为我正在寻找一些在 iframe 中使用 javascript 生成的内容。

现在我还有一个问题。在我的文档中,我的 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?

附言对不起我的英语不好:)

【问题讨论】:

  • 你能说得更具体一点吗?
  • 您实际上是在要求所有人帮助您做什么?阅读html?解析
  • 我的意思是:我必须用一些可以返回 javascript 的文本来解析所有代码。所以,我只能在执行 javascript 后解析文档。因为我需要一些动态内容,这些内容将使用 javascript 添加。

标签: c# javascript parsing


【解决方案1】:

我认为使用DOM 会获得更好的体验,正如使用WebBrowserDocument 属性所表示的那样。

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

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

【讨论】:

  • 谢谢。有用。也许并且以前已经工作过。我跳过了这个因为,我正在寻找一些在 iframe 中显示的内容。这是在 javascript 中生成的。
【解决方案2】:

尝试以下方法: - 将引用 Microsoft.mshtml 添加到您的应用程序。

试试:

public void setPage(mshtml.HTMLWindow2Class JSFile)
{
HTMLWindow2Class window = new HTMLWindow2Class();
window = JSFile;

}
public void scriptPrint()
{
IHTMLDocument2 doc = null; ;
IHTMLWindow2 parentwindow = doc.parentWindow;



parentwindow.execScript("report_back('Printing complete!')", "JScript");
}

}

这里还有一篇文章可能会对您有所帮助: http://www.dotnetcurry.com/ShowArticle.aspx?ID=194

【讨论】:

  • 他将如何执行 JavaScript?
【解决方案3】:

请阅读 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)
    });    
});

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 2012-09-04
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多