Web スクレイピングに最適な HTML 解析ライブラリ

httpx、AIOHTTP、urllib など、Web スクレイピングとデータ抽出に最適な HTML パーサーを見つけましょう。
2 min read
Best HTML Parsing Libraries main blog image

この比較記事の内容。

  • HTML パーサーの定義とパーサーを必要とする理由
  • 最高の HTML パーサーを比較する際の考慮事項
  • 最高の HTML 解析ライブラリはどれか

では詳細を見てみましょう!

HTML パーサーとは

HTML パーサーは HTML 文書を解析するために設計されたライブラリです。通常、XML を解析することもできます。つまり、HTML パーサーは HTML コードを処理して、内容の把握およびデート操作が容易な構造化データ形式に変換します。パーサーが生成するのは、HTML ページに関連付けられた DOM をより簡単に表現したものです。

HTML パーサーは通常、ローカルファイル、URL、または未処理の HTML 文字列を入力として受け取ります。次に、HTML コードを 1 文字ずつ解析して、タグ、属性、コンテンツなどのさまざまな要素を特定します。XML / HTML ドキュメントを解析する際、HTML 文書の階層表現を含むツリー構造を構築します。

HTML 解析ライブラリの最も重要なユースケースの 1 つは Web スクレイピングです。たとえば、オンラインショッピングサイトから商品情報を取得したいとします。HTTP クライアントを使用して、目的のページに関連付けられた HTML 文書を取得します。次に、その HTML コンテンツを HTML パーサーに渡します。API を使用して解析ツリーにアクセスして、商品名や価格などの関連情報を検索して抽出します。

DOM 上の特定の HTML 要素を対象とするために、HTML パーサーは通常 CSS セレクタまたは XPath 式に基づくノード選択方式をサポートします。HTML ノードを指定すると、通常、そのテキストコンテンツを抽出したり、属性値を読み取ったりするメソッドが提供されます。

最高の HTML 解析ライブラリを評価する際に考慮すべき要素

最高の利用可能な HTML パーサーを比較する際に考慮すべき最も重要な点を列挙しました。

  • 長所と短所: ライブラリの主な利点と欠点。
  • プログラミング言語: パッケージが記述されているプログラミング言語。
  • GitHub Star:GitHub 上の HTML 解析ライブラリに関連付けられているリポジトリのスターの数。
  • CSS セレクタのサポート:HTML パーサーに CSS セレクタのサポートが組み込まれているかどうか。
  • XPath サポート:ライブラリに XPath 式のサポートが組み込まれているかどうか。

では、これらの基準を適用して、IT 業界で最も優れた HTML パーサーを評価してみましょう。

HTML パーサー上位 7 選

最高の HTML 解析ライブラリを探究する時が来ました。 

1. jsoup 

jsoup は HTML 文書を解析するために設計された堅牢な Java ライブラリです。さらに、CSS セレクタまたは XPath 式による HTML 操作とデータ抽出を行うための API がすべて備わっています。オールインワンのスクレイピングライブラリとして、URL から HTML を取得するための使いやすいメソッドも提供します。jsoup ウェブスクレイピングガイドで自由自在に使えるようになりましょう。  

👍 長所

  •  WHATWG HTML 仕様を実装
  • ライブラリに HTTP クライアントが含まれています
  • 多数のメソッドとユーティリティを備えた膨大な API
  •  API ドキュメンテーション が完全な形でオンラインから入手可能

👎 短所

  • 最速の HTML パーサーではありません

💻 プログラミング言語:Java  

GitHub Star:10.5k  

🔎 CSS セレクタのサポート:あり  

🔎 XPath サポート:あり 

2.Nokogiri 

Nokogiri は、Ruby で XML および HTML 文書を読み込み、書き込み、変更、クエリするためのわかりやすい API を提供します。高速で標準に準拠しているものの、最高の HTML パーサーとは言えません。内部的には、libxml2、libgumbo、xerces などのネイティブパーサーに依存しています。  

👍 長所

  • すべての文書を信頼できないものとして扱うため、安全性がデフォルトで担保されています
  • jQuery に似た拡張機能を備えた CSS3 セレクタ
  • API ドキュメンテーションがすべて揃っている
  • コミュニティが管理するチートシートあり

👎 短所:

  • 最も使用されている HTML 解析ライブラリではない

💻 プログラミング言語:Ruby  

GitHub Star:6.1k  

🔎 CSS セレクタのサポート:あり  

🔎 XPath サポート:あり 

3.Beautiful Soup 

Beautiful Soup は、HTML や XML 文書やファイルを解析してそこからデータを抽出するための Python ライブラリです。解析ツリーを直観的に操作、検索、変更することができます。いくつかの基礎となるパーサーをサポートし、HTML コード整形などの多くの高度な機能を備えています。詳細については、Beautiful Soup Web スクレイピングのチュートリアルをご覧ください。  

👍 長所

  • 基礎となるパーサーが異なる
  • 最も広く使われている HTML 解析ライブラリの 1 つ
  • HTML および XML コードのフォーマット機能
  • 最初にリリースされた

👎 短所:

  • API ドキュメントなし
  • XPath のネイティブサポートなし

💻 プログラミング言語:Python  

GitHub Star: — (GitHub にはない)  

🔎 CSS セレクタのサポート:あり  

🔎 XPath サポート:ネイティブサポートはありませんが、lxml パッケージにて対応

4.Cheerio 

Cheerio は、JavaScript で HTML を解析するための jQuery にインスパイアされた包括的な API を提供します。jQuery に慣れている方であれば、すぐさまこのライブラリを最大限に活用できます。Cheerio はパフォーマンスを最優先事項としており、非常にシンプルで一貫性のある DOM 表現モデルを使用しています。詳細については、Cheerio Web スクレイピングのステップバイステップチュートリアルをご覧ください。  

👍 長所

👎 短所:

  • まだベータ版
  • XPath ネイティブサポートなし

💻 プログラミング言語:JavaScript (Node.js)  

GitHub Star:27.6k 

🔎 CSS セレクタのサポート:あり  

🔎 XPath サポート:なし 

5.Html Agility Pack 

Html Agility Pack は「HAP」とも呼ばれ、HTML 文書を読み書きするための C# で記述された HTML パーサーです。一般的な XPATH と XSLT に対応しているものの、CSS セレクタは未対応です。ほとんどの開発者は、綺麗に整形されていない HTML を解析するための頼りになる .NET ライブラリだと考えています。一番人気というわけではありませんが、それでも最高の HTML パーサーの 1 つです。 Html Agility Pack スクレイピングチュートリアルでパーサーの動作をご確認ください。  

👍 長所

  • .NET 互換のすべての言語で動作
  • XSLT サポート
  • 頻繁なリリース

👎 短所

  • ドキュメントはあまり多くない
  • CSS セレクタのネイティブサポートなし

💻 プログラミング言語:C#  

GitHub Star:2.5k  

🔎 CSS セレクタのサポート:ネイティブではありませんが、HTMLAgilitypack.CSSelector 拡張機能  を介して利用できます

🔎 XPath サポート:あり 

6. libxml2 

libxml2 はもともと XML を解析するために GNOME プロジェクトの一部として開発された C ライブラリです。ほとんどの C ライブラリと同様に、低レベルのデータ構造を扱うことで非常に高いパフォーマンスを発揮します。このことから、高レベル HTML パーサーの多くがこのライブラリを利用しています。  

👍 長所

  • 他の多くの解析ライブラリで使用されている
  • 究極のパフォーマンス

👎 短所

  • 複雑な API
  • 初心者向けではない
  • XPath しか使えない

💻 プログラミング言語:C  

GitHub Star: — (GitHub にはない)  

🔎 CSS セレクタのサポート:なし  

🔎 XPath サポート:あり 

7.PHPHtmlParser 

PHPHtmlParser は、CSS セレクタを使用して DOM 内のノードを選択するための PHP で記述されたシンプルで柔軟な HTML パーサーです。その主な目標は、PHP スクレイピングスクリプトの開発を支援することです。非標準の HTML や構造が壊れている HTML でもうまく機能します。  

👍 長所

  • 構造が壊れている HTMLでも解析可能
  • Web スクレイピングのための API がすべて揃っている

👎 短所

  • メンテナンスは頻繁に行われていない
  • ドキュメントなし
  • XPath ネイティブサポートなし

💻 プログラミング言語:PHP  

GitHub Star:2.3k  

🔎 CSS セレクタのサポート:あり  

🔎 XPath サポート:なし

最高の HTML パーサー:概要表

最高の HTML パーサーを下の概要表と比較してください。

HTML パーサープログラミング言語GitHub StarCSS セレクタXPath
jsoupJava10.5k
NokogiriRuby6.1k
Beautiful SoupPython追加の依存ライブラリにより可能
CheerioJavaScript27.6k
Html Agility PackC#2.5k拡張機能により可能
libxml2C
PHPHtmlParserPHP2.3k

おめでとうございます!これで、HTML 構文解析ライブラリに関して十分な知識を得られました!

結論

このガイドでは、さまざまなテクノロジーに最適な HTML 解析ライブラリをいくつか紹介しました。ニーズに最適なツールを見つけることは、使用したいプログラミング言語とプロジェクト固有の要件によって異なります。今回は、最高の HTML パーサーを見つけべく色々と見てきました。

どの方法を選択するにしても、ウェブサイトがボット対策技術によってスクレイピングを阻止する可能性は常に付きまといます。幸いなことに、Bright Data ならその点にも対応しています!当社のローテーションプロキシは 195 か国以上で利用でき、あらゆる HTTP クライアントと連携して解析する HTML を取得します。もし代わりにフル機能を備えたソリューションをお探しであれば、Scraping Browser には HTML パーサーが組み込まれており、 CAPTCHA、IPアドレス制限、レート制限を解決することもできます。どんな HTML 文書でも問題なく解析できます!

スクレイピングソリューションについて、当社のデータ専門家にご相談ください。