.NET Core HtmlAgilityPack HTML解析利器


最近學習.NET Core ,想把自己之前的一個項目升級到 .NET Core。

發現HtmlAgilityPack 沒法進行引用,遂自己做了些修改,可以運行在 .NET Core 中。現在分享出來,也是為  .NET Core 做一些貢獻。

.NET Core版 HtmlAgilityPack HTML解析利器,目前是 HtmlAgilityPack Core RC2

HtmlAgilityPack 介紹

HtmlAgilityPack是一個基於.Net的、第三方免費開源的微型類庫,主要用於在服務器端解析html文檔。

本源碼fork 自官網源碼,我只是對其做了一些修改及封裝。

官網源碼: http://htmlagilitypack.codeplex.com/

GitHub: https://github.com/linezero/HtmlAgilityPack

 

HtmlAgilityPack中定位節點基本上都用Xpath表達式,Xpath表達式的參考文檔可見:http://www.w3school.com.cn/xpath/xpath_syntax.asp 。

下面是幾個簡單使用說明:

1、獲取網頁title:doc.DocumentNode.SelectSingleNode("//title").InnerText; 
解釋:XPath中“//title”表示所有title節點。SelectSingleNode用於獲取滿足條件的唯一的節點。


2、獲取所有的超鏈接:doc.DocumentNode.Descendants("a")


3、獲取name為kw的input,也就是相當於getElementsByName():
            var kwBox = doc.DocumentNode.SelectSingleNode("//input[@name='kw']");

 

.NET Core 使用HtmlAgilityPack

新建一個控制台應用程序

然后添加 HtmlAgilityPack 引用,這里直接添加項目引用。

 

下面來講解一下簡單使用。以博客園新聞區為示例,進行解析。

 

        public static void Main(string[] args)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            HtmlWeb web = new HtmlWeb();
            var doc = web.LoadFromWebAsync("http://news.cnblogs.com/").Result;
            var nodes = doc.DocumentNode.SelectNodes("//div[@id='news_list']/div/div[2]/h2/a");
            foreach (var item in nodes)
            {
                Console.WriteLine($"標題:{item.InnerText} 地址:{item.Attributes["href"].Value}" );
            }
            Console.ReadKey();
        }

這樣我們就成功獲取到博客園新聞區信息。更多更強大的功能大家可以自己去發掘。

 

HtmlAgilityPack  .NET Core RC2

GitHub: https://github.com/linezero/HtmlAgilityPack

 

如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM