Blog ブログ
2022.11.04

Javaライブラリ Jsoup のご紹介

お役立ち情報

こんにちは!プロフェッショナルサービス事業部です。
Java開発者の皆さん、Jsoupというライブラリをご存知でしょうか?
今回はこのJsoupというライブラリについてご紹介したいと思います!

Jsoupとは?何ができるの?

業務の中で、Webサイトの情報を取得して解読するというお仕事があり、色々調べていたらこのライブラリを使うと良さそうだ、という結論に落ち着きました。

Jsoupは、Javaプログラムからとても簡単にインターネット上のWebサイトの情報を取得してくれます!

  • インターネット上のWebサイトのコンテンツを取得できる
  • 取得したHTMLを解析して欲しい情報を簡単に抽出できる
  • HTMLだけでなく画像などのバイナリデータも取得できる
  • HTTP-GetだけでなくHTTP-Postなどのリクエストもできる

導入方法

Mavenリポジトリに登録されていますので、Mavenで取得するのが簡単です。
直接ライブラリを入手する場合は、こちらから入手できると思います。

1.    Mavenプロジェクトを作成する

お使いの開発環境でMavenプロジェクトを作成します。
※私はEclipseを使用しています。

2.    依存関係の追加

出来上がった pom.xml に、依存関係を追記します。すると、Eclipseが自動的に依存ライブラリをダウンロードしてくれます。

今回のライブラリは単体で動作しますので、ダウンロードされるライブラリは1つです。

ソースコードを書いてみる

例えば、某ニュースサイトのトピックヘッドラインを取得してみます。

下図の赤枠部分を取得してみようと思います。

ソースコードは、たったこれだけ!

13行目

Jsoupクラスのstaticメソッドconnectの引数にURLを代入して実行すると、org.jsoup.Connectionを返します。このオブジェクトのget()メソッドで、指定のURLにHTTP-GETのリクエストを出してくれます。

返ってきたレスポンスはorg.jsoup.nodes.Documentオブジェクトに詰められて返されます。

14行目

13行目で返されたDocumentオブジェクトのselect()メソッドは、cssでのセレクタと同じ書式で、取得したHTMLを検索して取得結果を返してくれます。返される取得結果はorg.jsoup.select.Elementsオブジェクトとして返されます。

このオブジェクトには、主に以下のようなメソッドが用意されています。

サンプルコードでは、text()を実行していますので、

下記のような結果が得られます。

ご注意!!

例えば、同じWebサーバに対し、大量のリクエストを発行するようなプログラムを作ってしまうと、Webサーバ管理者からDDOS攻撃と見なされて、接続元IPアドレスからのアクセスを永久に遮断する措置がとられることにもなりかねません。

特に、Javaプログラムは高速で動作します。例えわざとでなくともWebサーバ管理者にとっては攻撃以外のなにものでもありませんので、未熟なプログラマーは細心の注意を払って開発をお願いいたします。

最後に

Jsoupは、HTMLソースだけでなく、画像などのバイナリデータも取得できます。

より便利に、より幸せに過ごせるよう、素敵なプログラミングライフを!