HtmlAgilityPack是一個開源的解析HTML元素的類庫,支持中文的HtmlAgilityPack.dll,最大的特點是可以通過XPath來解析HMTL,如果您以前用C#操作過XML,那么使用起HtmlAgilityPack也會得心應手。HtmlAgilityPack 測試分析小軟件,直觀 明了 對于編寫XPath非常有用.
Html Agility Pack最常用的基礎類其實不多,對解析DOM來說,就只有HtmlDocument和HtmlNode這兩個常用的類,還有一個 HtmlNodeCollection集合類。
asp.net使用HtmlAgilityPack的方法:
下面以一個簡單的例子來介紹下HtmlAgilityPack的使用,對于Asp.Net程序開發(fā)的網(wǎng)站要做模擬登錄的時候,除了要知道用戶名文本框和密碼文本框的name屬性值外,還需要知道頁面的__VIEWSTATE、__EVENTVALIDATION這兩個隱藏控件的值,以及提交按鈕的name屬性,下面看看怎樣使用HtmlAgilityPack來獲得這個額外的值。
1、在項目中添加對HtmlAgilityPack.dll的引用
2、在Aspx頁面中放幾個文本框控件和一個按鈕控件
C#中使用HtmlAgilityPack對html進行解析
HtmlAgilityPack基本支持.Net2-.Net4.5 也支持Sliverlight和Windows Phone,大家可以根據(jù)自己的需求來使用。
引用對應的DLL本文采用.Net4開發(fā)所以選擇Net40文件夾中的庫
打開谷歌瀏覽器吧鼠標放在你想要獲取的元素上,點擊鼠標右鍵->審查元素->Copy Xpath
編寫代碼:
/第一步聲明HtmlAgilityPack.HtmlDocument實例
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
//獲取Html頁面代碼
string html = HTMLHelper.Get_Http("http://www.studycsharp.com/");
//第二步加載html文檔
doc.LoadHtml(html);
//第三步通過Xpath選中html的指定元素 這樣子就獲取到了[url=http://www.studycsharp.com]www.studycsharp.com[/url]的"常用工具類"的板塊鏈接了
HtmlAgilityPack.HtmlNode htmlnode = doc.DocumentNode.SelectSingleNode("//*[@id=\"category_63\"]/table/tr[2]/td[2]/dl/dt/a");
//獲取所有板塊的a標簽
HtmlAgilityPack.HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//*[starts-with(@id,'category_')]/table/tr/td/dl/dt/a");
StringBuilder sb = new StringBuilder();
foreach (HtmlAgilityPack.HtmlNode item in collection)
{
sb.Append(string.Format("{0}:{1}\r\n", item.InnerText, item.Attributes["href"].Value));
}
this.textBox1.Text = sb.ToString();
代碼運行效果