从字符串中获取 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;
有没有其他方法可以做到这一点?我知道还有其他可用的浏览器控件,但是有更简单的方法吗?
您可以使用 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;
}
}
}