Java
スクレイピング
spring
Web
spring-boot

Javaでスクレイピングをしよう!!

開発環境

  • Spring Tool Suite

スクレイピングとは

Webサイト上のHTMLから特定の画像やタイトルなどのデータを抜き出す処理を指します!

スクレイピングに必要なライブラリ

スクレイピングをするには 「jsoup」 というライブラリを使用します!

jsoupとはHTMLを解析するためのライブラリで、解析するための様々なクラスが使えるようになります!

では、pom.xmlに以下の記述をしましょう。

<dependencies>

// 省略

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.10.2</version>
    </dependency>
</dependencies>


スクレイピングを行う手順

① WebサイトからHTML情報を取得する
② HTML情報から指定のタグ要素の情報を検索する
③ HTML情報からテキスト、属性値を抜き出そう

① WebサイトからHTML情報を取得する

HTML情報を扱うには 「Documentクラス」 を使用します。
Documenntクラスの変数を作成し、その変数に取得したHTML情報を代入します。以下の記述です!

Document document = Jsoup.connect("url").get();

connectメソッドの引数にURLの文字列を指定することで、そのURLのWebサイトのHTMLを取得できます。
その情報をDocumentクラスの変数に代入します。


② HTML情報から指定のタグ要素の情報を検索する

取得したタグ情報を取得するには 「selectメソッド」 を使用します。

Document document = Jsoup.connect("url").get();
Elements elements = document.select("h3");

2行目記述の右辺にselectメソッドを使用していますね。引数に文字列でh3を記述しているので、指定したURLのWebサイトから h3要素の情報 を取得し、Elementsクラスの変数に代入します。
Elementsクラスとは、Elementクラスをリストのような形で保持しているクラスで、Elementクラスは、HTMLの要素を表すクラスです。


③ HTML情報からテキスト、属性値を抜き出そう

HTMLのテキストを取得する際には、 「textメソッド」 を使用し、属性の値を取得したい場合は 「attrメソッド」 を使用します。

Document document = Jsoup.connect("url").get();
Elements elements = document.select("h3");

for (Element element : elements) {
    System.out.println(element.text());
}

selectメソッドで取得した"h3"要素の情報からテキストを取り出し、コンソールに表示させます!

Document document = Jsoup.connect("url").get();
Elements elements = document.select("h3 a");

for (Element element : elements) {
    System.out.println(element.attr("href"));
}

selectメソッドで取得した"h3 a"要素の情報からhref属性を取り出し、コンソールに表示させます!