[Tool]HtmlAgilityPack 一个解析Html的工具

[Tool]HtmlAgilityPack 一个解析Html的工具

Html Agility Pack ── 一个解析HTML的工具

.NET 框架类库本身没有提供工具分析HTML,以前常用的做法是用正则表达式,或者浏览器控件,或者MSHTML组件,甚至SgmlReader。SgmlReader可以将HTML转化成XML,然后你就可以使用System.Xml命名空间下的类对文件进行查询。

CodePlex上有一个Html Agility Pack项目,是原生的.NET项目,不依赖MSHTML或者ActiveX/COM 对象。其中的HtmlDocument可以加载任何HTML文件(即使该文件是不well-formed的HTML),然后允许你使用类似于System.Xml的对象模型对文件进行查询。

官网地址:www.codeplex.com/htmlagilitypack

例如: 

HtmlWeb webClient = new HtmlWeb(); 
HtmlDocument doc  =   webClient .Load( " file.htm " );
HtmlNodeCollection nodes = doc.DocumentElement.SelectNodes("/html[1]/body[1]/div")
 
foreach (HtmlNode node  in  nodes )
 {
      Console.WriteLine(node.InnerText.Trim());
 }
 doc = null;
 webClient = null;
 nodes = null; 

Q: 如何选择HTML结点?

//根据层次结构 因为HTML具阶层性(Hierarchy)
HtmlNode node1 = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[2]/div[7]/div[1]/div[3]/ol[1]/li[1]/div[1]/div[2]/address");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[1]/div[2]/div[3]/div[2]/div[1]/div[1]/div[1]/div");
//根据ID

HtmlNode node2 = doc.DocumentNode.SelectSingleNode("//p[@id='prop_detail_qt_prop_1' ");

几个比较有用的连接:

1. 开源项目Html Agility Pack实现快速解析Html

2. Pack ── 一个分析HTML的工具

3. HTML解析利器HtmlAgilityPack

4. c#蜘蛛程序之HTML解析利器HtmlAgilityPack

5. 开源项目Html Agility Pack实现快速解析Html

6. 一款很不错的html转xml工具-Html Agility Pack


你可能感兴趣的:([Tool]HtmlAgilityPack 一个解析Html的工具)