#開発環境
- 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属性を取り出し、コンソールに表示させます!