紹介

  • 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:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です