この比較ガイドでは以下の内容を確認できます:
- C# HTMLパーサーの定義と対応ユースケース
- C#における最高のHTMLパーサーを比較する際に考慮すべき点
- 最適なC# HTMLパースライブラリとは
さっそく見ていきましょう!
C# HTMLパーサーとは?
C# HTMLパーサーとは、HTML文書(多くの場合XMLコンテンツも)をパースする機能を提供するライブラリです。基本的に、これらのパッケージはHTMLコードをパースし、DOM(Document Object Model)のC#表現に変換します。
一般的に、C# の HTML パーサーはローカルファイル、URL、または生の HTML 文字列を入力として受け付けます。その後、HTML コードをパースし、タグ、属性、テキストノードなどの要素を識別します。パースプロセス中に、指定された HTML ドキュメントの階層構造を表すツリー構造を構築します。
より高度なツールでは、HTMLノードからデータを抽出するメソッドも提供されます。これにより.NET環境でのウェブスクレイピングが可能になります。この概念に不慣れな場合は、当社のウェブスクレイピング完全ガイドを参照してください。
C# HTMLパーサーには通常、CSSセレクターやXPath式に基づくノード選択APIが付属しています。場合によっては、DOM内の特定要素を選択するためのよりシンプルなカスタムメソッドも提供されます。
最高のHTMLパーサーの一覧については、当社の記事をご覧ください。
優れたC# HTMLパーサーを評価する際に留意すべき点
C#パースライブラリを比較する際に考慮すべき最も重要な要素は以下の通りです:
- 機能:パーサーが提供する機能。
- 長所:ライブラリがもたらす主な利点。
- デメリット:パーサーが持つ主な欠点。
- GitHubスター数:ライブラリに関連するリポジトリがGitHubで獲得しているスターの数。
- 平均日次ダウンロード数:NuGetレジストリに基づくパッケージの平均日次ダウンロード数。
- 最新リリース:ライブラリ最新版のリリース日(執筆時点)。
それでは、これらの基準を用いてIT界隈で最高のC# HTMLパーサーライブラリを評価してみましょう!
C#におけるトップ5 HTMLパーサー
最高のC# HTMLパースライブラリを発見する時が来ました。
1. AngleSharp

AngleSharpは、HTML、SVG、MathMLなどの角括弧ベースのハイパーテキストをパースできる.NETライブラリです。このパッケージはXMLパースもサポートしますが、検証機能は含まれません。AngleSharpはCSSのパースも可能です。
Html Agility Packと比較すると、このC# HTMLパーサーは公式のW3C仕様に基づいて構築されています。つまり、主要なブラウザでの完全な互換性を保証する、完全に移植可能なHTML5 DOM表現を生成します。
本ライブラリは、querySelector() やquerySelectorAll() といった標準的な JavaScript メソッドを用いたツリー探索機能も備えています。このプロジェクトの理念は、JavaScript で可能な DOM 操作をすべて C# でも実現できるようにすることです。
詳細は公式ドキュメントをご覧ください。機能:
- DOM内のノード検索用CSSセレクタエンジン
- 組み込みHTTPクライアント
- DOM探索のためのLINQクエリの完全サポート
- HTML、CSS、SVG、MathMLのパース機能
- シンプルなJavaScript実行エンジン
- HTMLエラー修正機能
長所:
- W3C仕様に基づく
- .NET、Unity、Xamarinなどでの動作を可能にするクロスプラットフォーム特性
- 優れたパフォーマンス
- HTML 5.1 および CSS3 仕様に準拠
- 充実した完全なドキュメント
- 拡張機能による拡張性
欠点:
- XPathサポートには追加の拡張機能が必要
GitHubスター数:5,000平均日次ダウンロード数: 約25,000
最新リリース: 2024年3月7日
2. Html Agility Pack

Html Agility Pack(通称HAP)は、C#でDOMを読み書きするためのアジャイルなHTMLパーサーです。デフォルトではプレーンなXPathまたはXSLTをサポートします。CSSセレクターはHtmlAgilityPack.CssSelectorまたはFizzler拡張機能経由で利用可能です。
このパーサーは不正なHTMLに対して非常に寛容です。これにより、標準に準拠していない可能性のある実際のウェブページを扱うのに最適です。C#でのウェブスクレイピングガイドでパーサーの実動例をご覧ください。
詳細は公式サイトをご覧ください。
特徴:
- HTML特殊文字のデコード機能
- DOM操作API
- 組み込みHTMLパーサー
- 動的コンテンツページ向け実験的ブラウザパーサー
長所:
- ファイル、文字列、Web(および実験的に内部ブラウザ)からHTMLを読み込める
- 拡張機能による拡張が可能
- 不正なHTMLの処理が可能
- 文書化が充実
- 1億6500万回以上のダウンロード実績
短所:
- CSSセレクタのネイティブサポートなし
- AngleSharpより動作が遅い
GitHubスター数: 2.6千
平均日次ダウンロード数: 約34,000回
最新リリース: 2024年5月1日
3. CsQuery

CsQueryは、C#向けの完全なCSSセレクタエンジン、HTMLパーサー、jQueryポートです。特に、すべてのCSS2およびCSS3セレクタ、ならびにjQueryが提供するすべてのDOM操作メソッドをサポートしています。これにより、慣れ親しんだjQueryメソッドをそのまま使用してDOMをトラバースし操作できます。
C# HTMLパーサーは、parseJSON() やtoJSON()などのその他のユーティリティメソッドも提供します。さらに、WebからHTMLドキュメントを取得するための統合されたカスタマイズ可能なHTTPクライアントも付属しています。
特徴:
- DOM操作機能
- リモートURLからのコンテンツ読み込みなど、実行をブロックせずに非同期イベントを管理するためのCsQuery Promise API
- DOM生成API
- カスタマイズ可能なレンダリングオプション(コメントの削除、閉じタグの不一致の無視など)
- JSONパース機能
- 組み込みHTTPクライアント
長所:
- jQuery風の構文
- Geckoブラウザエンジンで使用されているvalidator.nu HTMLパーサーのC#移植版
- 他のほとんどのC# HTMLパースライブラリよりもはるかに高速
- CSSセレクタのサポート
短所:
- 2013年以降アクティブにメンテナンスされておらず、未解決の既知のバグがいくつか存在する
- XPathをサポートしていない
GitHubスター数: 1.2k
平均日次ダウンロード数: 約2千回
最新リリース: 2013年6月4日
4. MariGold.HtmlParser

MariGold.HtmlParserはHTML文書をパースするC#パッケージです。各要素を一つずつパースして文書を走査することも、文書全体を一度にパースすることも可能です。後者の場合、ライブラリが再帰的に全ての子要素をパースします。
デフォルトでは、MariGold.HtmlParserはHTMLをパースしますが、<STYLE>タグ内のCSSや外部スタイルシートからのCSSはパースしません。同時に、ドキュメント内のインラインまたは外部CSSスタイルをパースするメソッドを提供します。
機能:
FindFirst()メソッドによるタグ名でのノード検索- 現在のノードから開始する DOM 探索のための完全な API
- HTMLおよびCSSの更新機能
長所:
- HTMLドキュメントのHTMLとCSSの両方をパース可能
- 外部スタイルシートへの相対URLを解決可能
- 外部依存関係なし
- 非常に軽量なパッケージ(41.47 KB)
短所:
- あまり普及していない
- CSSセレクタをサポートしていない
- XPathをサポートしていない
GitHubスター数:5
平均日次ダウンロード数: 124
最新リリース: 2023年6月18日
5. Majestic-12

Majestic-12は、オープンソースのクロスプラットフォーム対応、高性能C# HTMLパーサーです。このライブラリは外部依存関係を一切持たず、コア.NETパッケージのみを使用しています。ドキュメントによれば、作者はこれを用いて1日あたり3TB以上のHTMLをパースしているとのことです。ただし、このプロジェクトは15年以上更新されていません。
このライブラリに関連するNuGetパッケージはMajestic12HtmlParserです。NuGetレジストリへの登録は2015年8月27日ですが、コードベースは依然として2008年8月8日にリリースされたバージョン3.1.4を参照しています。
機能:
- HTMLをタグ、テキスト、コメントなどの小さなチャンクに分割してパースする
- 指定ノードの生のHTMLを更新する機能
ParseNext()メソッドによるツリー探索
長所:
- 高いパフォーマンス
- 大規模HTMLでの検証済み
- 設定可能なパース機能
- 70%以上のコードカバレッジ
短所:
- 最終更新は2008年
- CSSセレクタ非対応
- XPathをサポートしていない
GitHubスター数: GitHub未掲載
平均日次ダウンロード数: 約1
最新リリース: 2008年8月8日
最高のC# HTMLパーサー:比較表
以下の概要表で、最高のC# HTMLパーサーを一目で比較できます:
| パーサー | 機能 | GitHubスター数 | 平均日次ダウンロード数 | メンテナンス状況 | 組み込みの HTTP クライアント | CSS セレクタのサポート | XPath サポート |
| AngleSharp | 多数 | 5k | 約25k | 現在メンテナンス中 | ✔️ | ✔️ | 拡張機能経由 |
| Html Agility Pack | 多数 | 2.6k | ~34k | 現在メンテナンス中 | ✔️ | 拡張機能経由 | ✔️ |
| CsQuery | Medium | 1.2k | 約2k | メンテナンス終了 | ✔️ | ✔️ | ❌ |
| MariGold.HtmlParser | 少ない | 5 | 124 | 現在メンテナンス中 | ❌ | ❌ | ❌ |
| マジェスティック-12 | 少数 | — | ~1 | メンテナンス終了 | ❌ | ❌ | ❌ |
素晴らしい!これであなたはC#におけるHTMLパーサーのエキスパートです!
まとめ
この記事では、優れたC# HTMLパースライブラリをいくつか紹介しました。適切なツールの選択は、プロジェクト固有の要件によって異なります。.NET環境で利用可能な優れたHTMLパーサーをいくつか探求する機会を得られたでしょう。
どのツールを選択する場合でも、ほとんどのサイトがボット対策技術を採用しており、組み込みのHTTPクライアントでページをダウンロードすることは困難です。幸い、Bright Dataが解決策を提供します!
当社のローテーションプロキシは195カ国以上で利用可能で、あらゆるHTTPクライアントと連携し、解析対象のHTMLを取得します。フル機能ソリューションをお探しの場合は、スクレイピングブラウザが最適です。HTMLパーサーを内蔵し、CAPTCHA・IPブロック・レート制限の回避も可能です。あらゆるHTMLドキュメントを問題なくパースしましょう!
今すぐ無料トライアルを開始しましょう!