ウェブスクレイピングに最適なHTMLパースライブラリ

ウェブスクレイピングやデータ抽出に最適なHTMLパーサー(httpx、AIOHTTP、urllibなど)を発見しましょう。
2 分読
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解析ライブラリの最も重要なユースケースの一つがウェブスクレイピングです。例えば、オンラインショッピングサイトから商品情報を取得したい場合を考えましょう。HTTPクライアントを使用して対象ページに関連するHTMLドキュメントを取得します。次に、そのHTMLコンテンツをHTMLパーサーに供給します。そのAPIを使用して解析ツリーをナビゲートし、商品名や価格などの関連情報を特定・抽出します。

DOM上の特定のHTML要素をターゲットにするため、HTMLパーサーは通常、 CSSセレクター やXPath式に基づくノード選択戦略をサポートしています。HTMLノードが与えられた場合、そのテキストコンテンツを抽出したり属性値を読み取ったりするメソッドを提供するのが一般的です。

最適なHTMLパースライブラリを評価する際の考慮事項

利用可能な最高のHTMLパーサーを比較する際に考慮すべき最も重要な要素は以下の通りです:

  • 長所と短所:ライブラリの主な利点と欠点。
  • プログラミング言語: パッケージが記述されているプログラミング言語。
  • GitHubスター数:HTMLパースライブラリに関連するリポジトリがGitHubで獲得しているスターの数。
  • CSSセレクタサポート:HTMLパーサーがCSSセレクタの組み込みサポートを備えているかどうか。
  • XPathサポート:ライブラリがXPath式を組み込みでサポートしているかどうか。

それでは、これらの基準を適用してIT界隈で最高のHTMLパーサーを評価してみましょう!

トップ7 HTMLパーサー

最高のHTMLパースライブラリを探求する時が来ました。

1. jsoup

jsoupはHTML文書をパースするために設計された堅牢なJavaライブラリです。さらに、CSSセレクタやXPath式によるHTML操作とデータ抽出のための完全なAPIを備えています。オールインワンのスクレイピングライブラリとして、URLからのHTML取得を簡単に行う方法も提供します。当社のjsoupウェブスクレイピングガイドでエキスパートになりましょう。

長所:

  • WHATWG HTML仕様を実装
  • ライブラリにHTTPクライアントを内蔵
  • 豊富なメソッドとユーティリティを備えた広範なAPI
  • オンラインで完全なAPIドキュメントを提供

短所:

  • 最速のHTMLパーサーではない

プログラミング言語: Java  

GitHubスター数:10.5k  

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

XPathサポート: あり 

2. Nokogiri

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

長所:

  • デフォルトで安全:すべての文書を信頼できないものとして扱う
  • CSS3セレクタをサポート(jQuery風の拡張機能あり)
  • 完全なAPIドキュメント
  • コミュニティ管理のチートシート

短所:

  • 最も使用されているHTMLパースライブラリではない

プログラミング言語: Ruby  

GitHubスター数: 6.1k  

CSSセレクタ対応: あり  

XPathサポート: あり 

3. Beautiful Soup

Beautiful Soupは、HTMLおよびXML文書やファイルをパースしてデータを抽出するためのPythonライブラリです。パースツリーのナビゲーション、検索、変更を直感的に行える方法を提供します。複数の基盤となるパーサーをサポートし、HTMLコードの整形機能など数多くの高度な機能を備えています。Beautiful Soupによるウェブスクレイピングの詳細は、当サイトのチュートリアルをご覧ください。

長所:

  • 基盤となる複数のパーサー
  • 最も広く使われているHTMLパースライブラリの一つ
  • HTMLおよびXMLコードの整形機能
  • 迅速なリリース

短所:

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

プログラミング言語: Python  

GitHubスター数:—(GitHub未掲載)  

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

XPathサポート: ネイティブではないが、lxmlパッケージで可能 

4. Cheerio

Cheerioは、JavaScriptでHTMLをパースするための包括的なjQuery風APIを提供します。jQueryに慣れている方なら、このライブラリの真価をすぐに実感できるでしょう。Cheerioはパフォーマンスを最優先し、非常にシンプルで一貫性のあるDOM表現モデルを採用しています。詳細については、Cheerioウェブスクレイピングのステップバイステップチュートリアルをご覧ください。

長所:

デメリット:

  • ベータ版段階
  • XPathのネイティブサポートなし

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

GitHubスター数: 27.6k 

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

XPathサポート:なし 

5. Html Agility Pack

Html Agility Pack(通称「HAP」)は、HTML ドキュメントの読み書きを行う C# 言語で書かれた HTML パーサーです。プレーンな XPATH とXSLT をサポートしますが、CSS セレクターはサポートしていません。多くの開発者は、ウェブ以外の HTML をパースする際に最適な .NET ライブラリとしてこれを採用しています。最も人気があるわけではありませんが、依然として最高の HTML パーサーの一つです。 実際の動作は、当社のHtml Agility Packスクレイピングチュートリアルでご覧ください。

長所:

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

デメリット:

  • ドキュメントが少ない
  • CSSセレクタのネイティブサポートなし

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

GitHubスター数: 2.5k  

CSSセレクタサポート: ネイティブではないが、HtmlAgilityPack.CssSelector拡張機能経由で可能  

XPathサポート: あり 

6. libxml2

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

長所:

  • 多くの他のパースライブラリで使用されている
  • 非常に高いパフォーマンス

デメリット:

  • 複雑なAPI
  • 初心者向けではない
  • XPathに限定される

プログラミング言語: C  

GitHubスター数: — (GitHub未公開)  

CSSセレクタ対応: なし  

XPathサポート: あり 

7. PHPHtmlParser

PHPHtmlParserは、CSSセレクタを使用してDOM内のノードを選択するための、PHPで書かれたシンプルで柔軟なHTMLパーサーです。主な目的は、PHPスクレイピングスクリプトの開発を支援することです。非標準や破損したHTMLでも良好に動作します。

長所:

  • 破損したHTMLのパースが可能
  • ウェブスクレイピング用の完全なAPI

デメリット:

  • 積極的なメンテナンスが行われていない
  • ドキュメントなし
  • XPathのネイティブサポートなし

プログラミング言語: PHP  

GitHubスター数: 2.3k  

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

XPathサポート:いいえ

最高のHTMLパーサー:比較表

以下のまとめ表で最高のHTMLパーサーを比較してください:

HTMLパーサー プログラミング言語 GitHubスター数 CSSセレクター XPath
jsoup Java 10.5k
Nokogiri Ruby 6.1k
Beautiful Soup Python 追加の依存関係により可能
さようなら JavaScript 27.6k
Html Agility Pack C# 2.5k 拡張機能経由で可能
libxml2 C
PHPHtmlParser PHP 2.3k

素晴らしい!これでHTMLパースライブラリのエキスパートです!

まとめ

このガイドでは、様々な技術に対応した優れたHTMLパースライブラリをいくつかご紹介しました。最適なツールの選択は、使用するプログラミング言語とプロジェクト固有の要件によって異なります。ここでは、優れたHTMLパースをいくつか見つける機会を得られたはずです。

どの選択肢を選んでも、ウェブサイトがボット対策技術でアクセスを遮断する可能性があることを忘れないでください。幸い、Bright Dataが解決策を提供します!当社のローテーションプロキシは195カ国以上で利用可能で、あらゆるHTTPクライアントと連携し、解析対象のHTMLを取得します。フル機能ソリューションをお探しの場合は、スクレイピングブラウザがHTMLパーサーを内蔵し、CAPTCHAの解決・IP禁止・レート制限の解決も可能です。あらゆるHTML文書を問題なくパースしましょう!