我使用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;
还有另一种方法吗?我知道还有其他浏览器控件可用,但是有更简单的方法吗?
答案 0 :(得分:7)
您可以使用HtmlAgilityPack ....例如:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var results = doc.DocumentNode
.Descendants("div")
.Select(n => n.InnerText);
答案 1 :(得分:2)
我知道这是一个老帖子,但我的翻译是为了像我这样来到这里的其他人
如果您想使用代码.NET here is what you have to do
进行此操作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;
}
答案 2 :(得分:0)
我知道这是一个古老的话题,我的解决方案:
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;
}
}
}