icon
icon

Javaのjsoupライブラリを利用してスクレイピングを実行する方法【初心者向け】

初心者向けにJavaでスクレイピングを実行する方法について解説しています。これはWebから情報を抽出する技術です。今回はjsoupライブラリを使用した方法について紹介します。実際にTechAcademyのサイト内からスクレイピングを行った例を見てみましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Javaでスクレイピングを実行する方法について解説します。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

スクレイピングを実行する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

スクレイピングとは

スクレイピングとは、ウェブサイトのページから任意の情報を抽出する技術のことです。ウェブスクレイピング(Web scraping)とも呼ばれます。

対象のウェブサイトが外部に情報を提供するためのAPIなどを公開している場合はそれを使うことが一般的です。しかし、APIが公開されていなかったり、必要なタイミングでAPIから欲しい情報を得ることができなかったりといったケースもあります。

その場合は代替手段としてスクレイピングによるデータ収集を行うことがよくあります。

Javaでスクレイピングを実行する方法

Javaでスクレイピングを実行するには、HTMLを解析し、各要素にアクセスするプログラムを書く必要があります。

これをすべていちから作成するのは簡単ではありませんので、今回はjsoupというライブラリを利用することにします。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

例として、TECH ACADEMYのサイトから現在募集中のすべてのコース名をスクレイピングするプログラムを書いてみましょう。

前のセクションで紹介したjsoupを利用しますので、Eclipseのプロジェクトにjarファイルを追加したりMavenの依存関係を設定したりするなど、必要な準備を行ってください。

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

import java.io.IOException;

public class Scraping {
    public static void main(String[] args) throws IOException {
        Document document = Jsoup.connect("https://techacademy.jp/").get();
        Elements courses = document.select(".top-bootcamp-courses div.block-content h3");
        for (Element course : courses) {
            System.out.println(course.text());
        }

    }
}

非常にシンプルなコードですね。これだけですべてのコース名を抽出することができます。

document.select(".top-bootcamp-courses div.block-content h3");

この部分で、トップページからコースタイトルが記述されているh3タグをすべて収集し、次のforループでその内容を標準出力に出力しています。

実行すると、次の結果となりました。実際にTECH ACADEMYのトップページにアクセスして期待通りの結果が得られたか確認してみましょう。

※. 2018年10月時点の結果です。

Webアプリケーションコース
PHP/Laravelコース
Javaコース
フロントエンドコース
WordPressコース
iPhoneアプリコース
Androidアプリコース
Unityコース
はじめてのプログラミングコース
ブロックチェーンコース
スマートコントラクトコース
AIコース
Pythonコース
Scalaコース
Node.jsコース
Google Apps Scriptコース
Scratchコース
Webデザインコース
UI/UXデザインコース
動画編集コース
Webディレクションコース
Webマーケティングコース
Webアプリケーションフロントエンドセット
PHP/Laravelフロントエンドセット
WebデザインWordPressセット
WebデザインWebマーケティングセット
WordPressWebマーケティングセット
ブロックチェーンセット
PythonAIセット
iPhoneアプリAndroidアプリ
UnityiPhoneアプリ
UnityAndroidアプリ
UI/UXデザインiPhoneアプリ
WebディレクションWebデザイン
WebディレクションWebマーケティング
WebアプリフロントエンドWebデザインセット
PHP/LaravelフロントエンドWebデザインセット
Excel2013コース

 

監修してくれたメンター

青柳哲夫

独立系SIerやベンチャーを経て、現在はフリーランスエンジニアとして活動しています。
PHPやJava・Rubyでの業務系Webアプリケーション開発が得意です。
TechAcademyではJavaコース・ブロックチェーンコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。