Java

Javaでjsoupを使ってWebスクレイピングをする方法

uhablog

こんにちは、大学時代にプログラミングの勉強を始め現在はエンジニアをしているuhablogです。
当ブログでは現役エンジニアがプログラミング初学者の方向けにプログラミングの学習法を発信しています。

今回の記事ではJavaでWebスクレイピングをする方法について解説していきます。
Javaでスクレイピングをする際には「jsoup」というライブラリを使用します。

jsoupをEclipseで使用する方法やそもそもスクレイピングとはなんなのかということについて解説していきますので、是非最後まで読んでいってください。

スクレイピングとは

まず本題に入る前に少しだけスクレイピングとはなんなのかということについて解説していきます。

スクレイピングとはWebサイトから特定の情報を抜き出してDBに保存したりデータ解析をする技術のことです。
スクレイピングするプログラミング言語としてはPythonが定番ですが、実はJavaでもjsoupを利用することでスクレイピングをすることができます。

スクレイピングする際の注意点

スクレイピングはスクレイピング先のサーバーにアクセスして情報を取得します。
そのため一度に大量のリクエストを送る処理をすると相手のサーバーに負担をかけることになってしまいます。

スクレイピングをする際は対象となるサイトの利用規約などを読んで、スクレイピングをしても良いのかどうかしっかりと確認しましょう。
またしても良い場合でも、負担をかけるような処理は避けるようにしましょう。

Javaでスクレイピングする

スクレイピングについて簡単に理解したところで実際にスクレイピングしていきましょう!

jsoupの準備

Javaでスクレイピングをする際にはjsoupというライブラリを利用します。
公式サイトからjarファイルをダウンロードします。

公式サイトにアクセスしたら「Getting started」の下にある「Download」をクリックします。

次に「jsoup-1.14.3.jar」をクリックするとjarファイルがダウンロードされます。

Eclipseに追加

jarファイルをダウンロードしたら次にEclipseで利用できるようにします。
Eclipseを起動し、利用するプロジェクトを「右クリック」します。
「ビルド・パス」にカーソルを合わせ、「外部アーカイブの追加」を選択します。

先ほどダウンロードしたjsoupのjarファイルを選択し、「Open」を押します。

プロジェクト内の「参照ライブラリー」に選択したjarファイルが表示されていたら、ひとまず設定は完了です。

スクレイピングするプログラムの作成

ここまで準備が完了したら、次はプログラムを作成します。
今回は当ブログのトップページから記事のタイトルを取得するプログラムを作成します。

プログラム

次のプログラムが実際のプログラムになります。

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SampleCode {
    public static void main(String[] args) throws IOException {

        // 当ブログのトップページにGETリクエストを送る
        Document doc = Jsoup.connect("https://uha-blog.com/").get();
		
        // トップページのh2要素を取得する
        Elements elements = doc.select("h2");
		
        // 取得した要素を順番に取得する
        for (Element element: elements) {
			
            // 取得した要素を出力する
            System.out.println(element.text());
        }
    }
}

初めにJsoup.connectメソッドを利用して、ブログのトップページにGETリクエストを送っています。
これによりトップページの情報を取得することができます。

さらにselectメソッドを使って、h2要素を取得しています。
当ブログのトップページにある記事のタイトルがh2であるため、h2要素を取得しました。

取得したタイトルを拡張for文を使って、順番に取得し、それを出力しています。

実行結果は次のようになります。

実行結果

【Java】文字列が数値かどうか判定する方法
【Java】四捨五入/切り上げ/切り捨てする方法を徹底解説
【サーブレット&jsp入門】値の受け渡し
【2022年版】EclipseをMacにインストールする
【Java】サーブレットとは?現役エンジニアがわかりやすく解説
【Java】コマンドライン引数とは?
【Java】コンストラクタとは?現役エンジニアがわかりやすく解説!
【Java】クラス変数とは?インスタンス変数との違いもわかりやすく解説
Javaのクラスとは?現役エンジニアがわかりやすく解説
【Java】キーボードからの入力を繰り返し実行する方法を解説

まとめ

今回はJavaでjsoupを利用してスクレイピングする方法について解説しました。

スクレイピングというのはWebサイトから必要な情報を抜き出す技術のことでデータ解析などに利用されます。
注意点としては相手のサーバーに負荷がかかるため、利用規約などをしっかりと確認してスクレイピングする必要があります。

jsoupを利用するためには公式ページからjarファイルをダウンロードし、それをEclipseで設定する必要があります。

今回は例として当ブログのトップページから記事のタイトルを取得し、出力する方法について実際にプログラムを書いて、解説しました。

プログラミング学習はUdemyがおすすめ

私はプログラミングの学習はUdemyで行うのが一番おすすめです。
Udemyでは動画講座でプログラミングなどのスキルを身につけることができます。
現役エンジニアがUdemyをオススメする理由は
・動画で好きなときに学べる
・一流の講師に学ぶことができる
・講師の方に質問ができる
・返金保証もある
・セールを頻繁に開催している
といったたくさんの理由があります。

現在Udemyではセールを開催しています!
通常時1万円から2万円前後の価格で講座が販売されていますが、セール時には1500円前後(ランチ代くらい)で一つの講座を購入することができます。
UdemyにはサーブレットでWebアプリ開発が学べる講座iconもあるので、JavaでWebアプリ開発する方法を学んでみたい!という方は今がチャンスです!

\\今ならセール開催中!//

Udemyでサーブレット&jspを学ぶ!!

返金保証付き

独学が不安な人へ

独学で学んでいく意志がある方にはUdemyなどで学習するのがおすすめですが、プログラミングを独学するにはそれなりにハードルがあります。

  • プログラミングで一度挫折した経験がある
  • 一人で学習する自信がないので、サポートが欲しい

という方にはプログラミングスクールを検討してみるのがおすすめです。

-Java
-, ,