[来源:Saveen Reddy] .NET 框架类库本身没有提供工具分析HTML,以前常用的做法是用正则表达式,或者浏览器控件,或者MSHTML组件,甚至SgmlReader。SgmlReader可以将HTML转化成XML,然后你就可以使用System.Xml命名空间下的类对文件进行查询。
CodePlex上有一个Html Agility Pack项目,是原生的.NET项目,不依赖MSHTML或者ActiveX/COM 对象。其中的HtmlDocument可以加载任何HTML文件(即使该文件是不well-formed的HTML),然后允许你使用类似于System.Xml的对象模型对文件进行查询。
譬如,
HtmlDocument doc = new HtmlDocument();
doc.Load("somehtml.html");
Console.WriteLine(doc.DocumentNode.InnerHtml);
foreach ( HtmlNode node in doc.DocumentNode.SelectNodes("//a"))
{
string url = node.GetAttributeValue("href", "");
Console.WriteLine(url);
}