jsoup: Java用HTMLパーサー
jQueryのような簡潔さでJavaでHTMLをスクレイプ、クリーンアップ、操作
jsoupとは?
jsoupは実世界のHTMLを扱うために設計された軽量かつ強力なJavaライブラリです。URL、ファイル、文字列からHTMLを解析し、DOMトラバーサル、CSSセレクター、最新のHTML5メソッドを使用してデータを抽出・操作するための直感的なAPIを提供します。ウェブスクレイピング、データ抽出、HTMLサニタイズに最適で、ブラウザのように不正なマークアップも適切に処理します。
正規表現ベースのアプローチとは異なり、jsoupはjQueryにインスパイアされたメソッドでクリーンなオブジェクトモデルを提供し、フォーム送信、属性変更、テキスト抽出などのタスクを簡素化します。依存関係がなくMITライセンスのため、信頼性の高いHTML処理を必要とするJava開発者に人気です。
jsoupの主な利点:
- 実世界のHTML処理: ブラウザのように乱れたHTMLを解析
- jQuery風の構文: 慣れ親しんだCSSセレクター(例:
doc.select("div.content")
) - スクレイピングに適した設計: リダイレクト追跡、クッキー処理、フォーム送信
- クロスプラットフォーム: ネイティブ依存なしの純粋なJava
- セキュリティ: 組み込みXSS防止とHTMLサニタイズ機能
データマイニング、ウェブ自動化、コンテンツ分析に最適です。
jsoupを選ぶ理由
- シンプルさ: CSSセレクターをサポートした直感的なAPI
- 信頼性: 2009年から活発にメンテナンス
- パフォーマンス: ストリーミングや大規模ドキュメント向けに最適化
- 柔軟性: フラグメント、ファイル、ライブURLで動作
- クリーンな出力: HTMLの整形と再フォーマット
インストール
MavenまたはGradleでjsoupを追加:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
システム要件: Java 8+
コード例
jsoupの実用的な使用例:
例1: 文字列からドキュメントを解析
Java文字列内のHTMLを解析して内容を取得または変更する場合、jsoupではわずか数行のコードで実現できます。
parse(String html, String baseUri)
メソッドは入力HTMLを新しいDocumentに変換します。baseUri
パラメーターは相対URLを絶対URLに解決するのに役立ち、ドキュメントが取得されたURLに対応している必要があります。これが関連しない場合、またはHTMLに<base>
要素が含まれている場合は、より単純なparse(String html)
メソッドを使用できます。
例2: CSSセレクターで要素を検索
CSSセレクターを使用して要素を検索または操作する場合、HTML文字列を直接解析して操作します:
例3: 要素のHTMLを変更
要素のHTMLを変更する必要がある場合、以下のサンプルコードに示すようにElementのHTMLセッターメソッドを使用します。
高度な機能
jsoupはプロフェッショナルなHTML処理をサポート:
- フォーム処理: POSTデータを送信:
フォーム送信
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- プロキシサポート: プロキシ経由でスクレイピング:
プロキシ設定
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- DOM操作: HTML構造を変更:
DOM変更
doc.select("div.ads").remove(); // すべての広告を削除 doc.select("h1").attr("class", "header"); // CSSクラスを追加
jsoup vs HTMLUnit
主な違い:
- 焦点: jsoupは静的HTMLを解析、HTMLUnitはブラウザをシミュレート(JavaScript実行)
- 速度: jsoupは純粋なHTML解析でより高速
- APIスタイル: jsoupはCSSセレクター、HTMLUnitはSeleniumを模倣
- 使用事例: jsoupはスクレイピング、HTMLUnitは動的ページのテスト
- 依存関係: jsoupはなし、HTMLUnitは追加ライブラリが必要
結論
jsoupはJava開発者向けの究極のHTMLツールキットです。以下に最適:
- ウェブスクレイピング: あらゆるウェブサイトからデータを抽出
- データクリーニング: HTMLをサニタイズして正規化
- コンテンツ分析: RSSフィードやウェブアーカイブの解析
- テスト: アプリ内のHTML構造を検証
MITライセンスと直感的なAPIにより、JavaベースのHTML処理における第一選択肢です。