こんにちは!プロフェッショナルサービス事業部です。
Java開発者の皆さん、Jsoupというライブラリをご存知でしょうか?
今回はこのJsoupというライブラリについてご紹介したいと思います!
業務の中で、Webサイトの情報を取得して解読するというお仕事があり、色々調べていたらこのライブラリを使うと良さそうだ、という結論に落ち着きました。
Jsoupは、Javaプログラムからとても簡単にインターネット上のWebサイトの情報を取得してくれます!
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ソースだけでなく、画像などのバイナリデータも取得できます。
より便利に、より幸せに過ごせるよう、素敵なプログラミングライフを!