HTML文書からテキストを効率的に抽出することは、Webスクレイピングやデータ処理において頻繁に必要な処理です。Java ecosystemでは、Jsoupライブラリを使用することで、複雑なHTML構造から目的のテキスト情報を بسهولةに取得できます。本稿では、Jsoupを活用したHTMLテキスト抽出と改行処理の実装方法について解説します。
Jsoupの概要と特徴
Jsoupは、JavaでHTML文書を解析および操作するための代表的なオープンソースライブラリです。DOM操作に精通している開発者にとっては馴染み深いAPIを提供しており、HTML文書の構造を木(ツリー)として表現し、各要素に対して柔軟なアクセスが可能となります。テキスト抽出、属性取得、要素の走査など、Webアプリケーション開発で必要となるHTML処理のほぼすべてをカバーしている点が大きな特徴です。
HTMLテキスト抽出の実装
具体的な実装イメージをコードとともに確認していきましょう。以下に、HTML文書からテキストを抽出し、適切な位置で改行を挿入するサンプルプログラムを示します。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class TextExtractor {
public static void main(String[] args) {
String sourceHtml = "<html><head><title>サンプル</title></head>" +
"<body><section><article>最初の文書ブロック</article>" +
"<article>次の文書ブロック</article>" +
"<aside>補足情報のブロック</aside></section></body></html>";
Document parsedDoc = Jsoup.parse(sourceHtml);
String extractedContent = parsedDoc.text();
String formattedText = extractedContent.replaceAll("。", "。\n");
System.out.println(formattedText);
}
}
この実装例では、HTML文字列をJsoupのparseメソッドでDocumentオブジェクトに変換した後、text()メソッドを使用して文書全体のテキストを取得しています。最後にreplaceAllメソッドを用いて句点(。)の直後に改行コードを挿入し、人間が読みやすい形式に整形しています。
処理結果の確認
先ほどのプログラムを実行すると、次のような出力が得られます。
最初の文書ブロック。
次の文書ブロック。
補足情報のブロック。
この結果からわかるように、HTMLタグは完全に除去され、平坦化されたテキストが取得されています。改行処理により、各文が視覚的に分離された状態で出力されていることが確認できます。
実用的な活用シナリオ
Jsoupを活用したテキスト抽出は、さまざまな場面で応用可能です。Webコンテンツの定期的なモニタリング、システム間でのデータ連携、インデックス作成のための前処理など、HTML形式のデータを扱うあらゆる工程で活用できます。複雑なCSSセレクターやXPathを組み合わせることで、特定部分のみを精密に抽出することも可能であり、必要に応じて処理を拡張していくことができる柔軟な設計となっています。