【问题标题】:Is there an alternative to WebBrowser control for DOM traversal?是否有用于 DOM 遍历的 WebBrowser 控件的替代方法?
【发布时间】:2016-02-12 08:30:52
【问题描述】:

我目前在我的 Windows 窗体应用程序中使用 WebBrowser 控件来导航到 URL。到达该 URL 后,我使用 FirstChildHtmlElement 类的 NextSibling 方法从 WebBrowser.Document 对象遍历文档树。 我这样做的原因是从页面获取信息并将这些信息存储到数据库中。

这是我问题的症结所在:我真的需要使用WebBrowser 类吗?我目前不需要向用户显示网页,只需要在页面中找到的一些信息。 有没有更好的方法可以在不依赖此类的情况下做到这一点?需要可以进行 DOM 遍历的实体,但如上所述,我不需要显示网页。

问候 克鲁兹

【问题讨论】:

    标签: c# winforms visual-studio dom webbrowser-control


    【解决方案1】:

    您可以使用WebClient 下载 HTML 而不显示页面。然后,您可以使用 HTML Agility Pack 之类的东西从字符串中创建一个 HTMLDocument

    例子:

    using (WebClient wc = new WebClient())
    {
        string html = wc.DownloadString("http://www.foo.bar/"); // Change as required.
        HtmlAgilityPack.HtmlDocument h = new HtmlAgilityPack.HtmlDocument();
        h.LoadHtml(html);
    }
    

    使用 HTML Agility Pack 的原因:

    HtmlDocument 类是原生 IHtmlDocument2 COM 接口的包装器。 你不能轻易地从一个字符串创建它.....

    因此不能不使用 WebBrowser。

    来自https://stackoverflow.com/a/4935482/4546874

    但是,您可以隐藏 WebBrowser。

    【讨论】:

    • 我回到我的问题,看看是否有任何答案,我对 Farhan 的回复似乎没有发布,所以又发了。感谢 Farhan 的回复,我将调查 WebClient 类,看看它是否符合我的目的。问候,克鲁兹
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多