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

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

但是我想把它变成一个HtmlDocument对象,所以我可以使用这个类提供的DOMfunction。 目前我知道如何做的唯一方法是使用浏览器控件,如下所示:

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

还有另一种方法吗? 我知道还有其他浏览器控件可用,但是有更简单的方法吗?

你可以使用HtmlAgilityPack ….例如:

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

我知道这是一个老post,但我的翻译是为了像我这样来到这里的其他人

如果你想使用代码.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; } } }