从字符串中获取 HtmlDocument 而不使用浏览器控件

本文关键字:浏览器 控件 字符串 获取 HtmlDocument | 更新日期: 2023-09-27 18:34:22

我使用WebClient获取网页的html代码(作为字符串)。

但是,我想将其转换为 HtmlDocument 对象,以便我可以使用此类提供的 DOM 功能。目前,我知道该怎么做的唯一方法 - 是使用浏览器控件,如下所示:

            string pageHtml = client.DownloadString(url);
            browser.ScriptErrorsSuppressed = true;
            browser.DocumentText = pageHtml;
            do
            {
                Application.DoEvents();
            } while (browser.ReadyState != WebBrowserReadyState.Complete);
            return browser.Document;

有没有其他方法可以做到这一点?我知道还有其他可用的浏览器控件,但是有更简单的方法吗?

从字符串中获取 HtmlDocument 而不使用浏览器控件

您可以使用 HtmlAgilityPack ....例如:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var results = doc.DocumentNode
    .Descendants("div")
    .Select(n => n.InnerText);
我知道

这是一个旧帖子,但我的回复是为像我一样来这里的其他人准备的

如果你想使用代码.NET来做到这一点,这就是你必须做的

public System.Windows.Forms.HtmlDocument GetHtmlDocument(string html)
        {
            WebBrowser browser = new WebBrowser();
            browser.ScriptErrorsSuppressed = true;
            browser.DocumentText = html;
            browser.Document.OpenNew(true);
            browser.Document.Write(html);
            browser.Refresh();
            return browser.Document;
        }
我知道

这是一个古老的话题,我的解决方案:

public static class HtmlHelpr{
        public static HtmlDocument HtmlDocumentFromFile(this string PathToHtml){
            using(WebBrowser wb = new WebBrowser()){            
                string s = File.ReadAllText(PathToHtml);
                wb.ScriptErrorsSuppressed = true;
                wb.DocumentText = s;
                var hd = wb.Document;
                hd.Write(s);
                return  hd;
            }
        }
    }