- 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#で開発され、Webスクレイピング、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("WebページのHTML文字列");
//2.XPathで要素を検索
HtmlNode titleNode = htmlDoc.DocumentNode.SelectSingleNode("//title");
string title = titleNode?.InnerText;Code language: C++ (cpp)
これでHTML文字列の解析が実行できます。
紹介
Next: XPath