Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

開発環境

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした