發(fā)文章
發(fā)文工具
撰寫
網文摘手
文檔
視頻
思維導圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉文字
文件清理
AI助手
留言交流
HtmlAgilityPack是一個基于.Net的、第三 方免費開源的微型類庫,主要用于在服務器端解析html文檔(在B/S結構的程序中客戶端可以用Javascript解析html)。截止到本文發(fā)表 時,HtmlAgilityPack的最新版本為1.4.0。下載地址:http://htmlagilitypack./
下載后解壓縮后有3個文件,這里只需要將其中的HtmlAgilityPack.dll(程序集)、 HtmlAgilityPack.xml(文檔,用于Visual Studio 2008中代碼智能提示和幫助說明之用)引入解決方案中即可使用,無需安裝任何東西,非?!熬G色環(huán)?!?。
在C#類文件開頭引入using HtmlAgilityPack;就可以使用該命名空間下的類型了。實際使用中,幾乎都是以HtmlDocument類為主線的,這一點非常類似于微 軟.net framework中的XmlDocument類。XmlDocument類是操作的是xml文檔,而HtmlDocument類操作的是html文檔 (其實也可以操作xml文檔),它們的操作方式都是基于Dom,所不同的是后者取消了諸如GetElementsByTagName這樣的方法,強化了 GetElementById方法(在HtmlDocument中可以直接使用,而XmlDocument則不可以)。HtmlAgilityPack中 定位節(jié)點基本上都用Xpath表達式,Xpath表達式的參考文檔可見:http://www.w3school.com.cn/xpath/xpath_syntax.asp
例如,我們要采集博客園首頁推薦文章的標題,在ASP.NET中可以編寫如下代碼:
這段代碼將采集到的首頁html靜態(tài)文本解析成Dom節(jié)點樹,然后用Xpath表達式獲取整個文檔中class屬性值為titlelnk的 所有a元素。獲取節(jié)點最常用節(jié)點對象的兩個方法:SelectNodes("xpath表達式")和SelectSingleNode("xpath表達 式"),前者返回節(jié)點集合HtmlNodeCollection的一個實例;后者返回滿足條件的第一個節(jié)點,類型為HtmlNode的一個實例。后面的 Foreach循環(huán)輸出每個a元素的內聯(lián)文本。
通常情況下,HtmlAgilityPack比正則表達式解析html更加高效準確,這體現(xiàn)在開發(fā)效率和運行性能兩方 面。HtmlAgilityPack的靈活性也是非常好的。例如將上面代碼中的foreach循環(huán)體改成 Response.Write(anchor.OuterHtml + "<br/>");則輸出的是超鏈接本身而非內聯(lián)文本。甚至可以修改超鏈接本身:
這樣運行后你看到的是紅色的超鏈接。你可以幾乎隨心所欲地對HtmlAgilityPack解析生成的Dom節(jié)點樹上的節(jié)點操作,就像你擁有一顆 自己的圣誕樹,可以隨意對其修整剪裁。這也是正則方法無法相提并論的。HtmlAgilityPack對源文本的結構要求非常寬松,即使沒有根元素也一樣 正常使用,這同要求非常嚴格的XmlDocument完全不同。熟練掌握HtmlAgilityPack解析html文檔的關鍵在于熟悉Xpath表達式 語法,好在Xpath的語法入門比較簡單,只需花費數(shù)個小時基本就可滿足大部分應用。依托于Dom高效而通用的結構,Xpath強大而簡練的語 法,HtmlAgilityPack真可以稱為“解析html和采集網頁的神兵利器”。
來自: 昵稱10504424 > 《工作》
0條評論
發(fā)表
請遵守用戶 評論公約
.NET Core HtmlAgilityPack HTML解析利器
NET Core HtmlAgilityPack HTML解析利器。發(fā)現(xiàn)HtmlAgilityPack 沒法進行引用,遂自己做了些修改,可以運行在 .NET Core 中。NET Core版 ...
別在迷戀正則表達式解析html了,好嗎?
..:選取當前節(jié)點的父節(jié)點。< Article ></ Article >針對上面的XML文件,我們列出了帶有謂語的一些路徑表達式,以及表達式的...
C# 實現(xiàn)網絡爬蟲
1 private string GetHtml(string Url) //:Url="http://www.cppi.cn";HtmlAgilityPack是.net下的一個HTML解析類庫,具體使用詳...
Python網絡爬蟲四大選擇器(正則表達式、BS4、Xpath、CSS)總結
Python網絡爬蟲四大選擇器(正則表達式、BS4、Xpath、CSS)總結。前幾天小編連續(xù)寫了四篇關于Python選擇器的文章,分別用正則表達式、Be...
向HtmlAgilityPack道歉:解析HTML還是你好用
解釋:HtmlAgilityPack是使用XPath語法,"//comment()"在XPath中表示“所有注釋節(jié)點”,關于XPath的詳細用法請參考XPath的資...
xPath和html基礎掃盲
xPath和html基礎掃盲。xPath:一種HTML和XML的查詢語言,他能在XML和HTML的樹狀結構中尋找節(jié)點。安裝xPath:pip方法: pip install lxml.此時可以看到xml已經安裝完成。HTML:一種網頁的標準、規(guī)范。...
古代神兵利器
古代神兵利器。
VB.NET 用HtmlAgilityPack解析百度文庫,獲取百度文庫中的內容(以富甲美國為例)
VB.NET 用HtmlAgilityPack解析百度文庫,獲取百度文庫中的內容(以富甲美國為例)2.獲取一篇百度文庫文章word/pdf格式等都可以(以<富甲...
HTML直通車:怎么操作出來的網頁不一般,大神都是這樣做的
HTML直通車:怎么操作出來的網頁不一般,大神都是這樣做的。
微信掃碼,在手機上查看選中內容