- 一套 HTML 解析程式庫
- 可透過 XPath 語法解析 HTML 的類別庫
- 建議先簡單認識 XPath 的基礎觀念
- XPath 透過路徑運算式,取出 XML 內的節點值與屬性值
- 屬於開源的 .NET 程式庫
- 舊版原始碼存放位置:http://htmlagilitypack.codeplex.com/
目前官方原始碼託管於 GitHub:https://github.com/zzzprojects/html-agility-pack
Html Agility Pack 是 .NET 生態圈裡經典的開源 HTML 解析程式庫,使用 C# 開發,廣泛運用於網頁爬蟲、HTML 內容擷取、HTML 文件修改場景。
最大特色:可相容格式不規範、殘缺的 HTML(多數網頁並非標準閉合 XML,一般 XmlDocument 無法解析,HAP 可自動容錯處理)。
XPath 原本用於查詢 XML 文件,HAP 把 HTML 載入成 DOM 文件樹之後,同樣支援 XPath 語法搜尋節點:
- 透過路徑運算式篩選標籤、擷取文字、取出屬性
- 常用方法:
SelectSingleNode("xpath運算式"):取得第一個符合條件的節點SelectNodes("xpath運算式"):取得全部符合條件的節點
無需手動下載原始碼,直接透過 NuGet 安裝套件即可
Install-Package HtmlAgilityPack
支援 .NET Framework、.NET Core、.NET 5‑.NET9、MAUI 等主流 .NET 平台。
底下是簡單範例,請在 Visual Studio 建立主控台專案
接著在 Main 函式內加入以下程式碼
using HtmlAgilityPack;
//1.載入HTML文字
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml("網頁HTML字串");
//2.使用XPath查詢元素
HtmlNode titleNode = htmlDoc.DocumentNode.SelectSingleNode("//title");
string title = titleNode?.InnerText;Code language: C++ (cpp)
就可以完成 HTML 字串的解析作業。
介紹
Next: XPath