乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      解析html和采集網頁的神兵利器

       昵稱10504424 2014-09-24

      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和采集網頁的神兵利器”。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多