Asp.Net HTML 解析類庫

1、HtmlAgilityPack

HtmlAgilityPack是.net下的一個HTML解析類庫。支持用XPath來解析HTML。這個意義不小,爲什麼呢?因爲對於頁面上的元素的xpath某些強大的瀏覽器能夠直接獲取得到,並不需要手動寫。節約了大半寫正則表達式的時間,當然正則表達式有時候在進一步獲取的時候還需要寫,但是通過xpath解析之後,正則表達式已經要匹配的範圍已經非常小了。而且,不用正則表達式在整個頁面源代碼上匹配,速度也會有提升。總而言之,通過該類庫,先通過瀏覽器獲取到xpath獲取到節點內容然後再通過正則表達式匹配到所需要的內容,無論是開發速度,還是運行效率都有提升。

但是使用XPaht比較麻煩,所以不推薦

2、ScrapySharp

ScrapySharp是基於HtmlAgilityPack開發的插件,直接根據html標籤、ID、class標籤查找dom,和jquery寫法一樣,推薦使用

using HtmlAgilityPack;

using ScrapySharp.Network;
using ScrapySharp.Extensions;

using System.Linq;

var uri = new Uri("http://www.cnblogs.com/webapi/");
        var browser1 = new ScrapingBrowser();
        var html1 = browser1.DownloadString(uri);
        var htmlDocument = new HtmlDocument();
        htmlDocument.LoadHtml(html1);
        var html = htmlDocument.DocumentNode;

      //單個
var title = html.CssSelect("title").First(); Response.Write(htmlNode.InnerHtml);      //集合 divs = html.CssSelect(".post_item"); foreach (var htmlNode in divs) { Response.Write(htmlNode.InnerHtml); }

3、Fizzler

功能和上邊的ScrapySharp類似,選擇器稍微強大點

using HtmlAgilityPack;

using Fizzler.Systems.HtmlAgilityPack;

var web = new HtmlWeb();
        var document = web.Load("https://www.cnblogs.com/webapi/");
        var page = document.DocumentNode;

        foreach (var item in page.QuerySelectorAll(".post-item"))
        {
            var title = item.QuerySelector("a").InnerText;
            
            Response.Write(title);
           
            Response.Write("<br>");
        }

4、CsQuery

使用方法和使用jquery一樣,可惜作者不更了

using CsQuery;
using CsQuery.Web;

ServerConfig config = new ServerConfig();
        CQ dom = CQ.CreateDocument(html);
        CQ data = dom[".post-item-text"];
        string tep = "";
        foreach (var item in data)
        {
            tep += item.InnerHTML + "<br/>";
        }
        Response.Write(tep);

5、AngleSharp

這個沒測試不做評價,有興趣的請自行測試

推薦使用Fizzler,小巧方便

下載地址,後期更新

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章