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というライブラリを利用することにします。
実際に書いてみよう
例として、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やベンチャーを経て、現在はフリーランスエンジニアとして活動しています。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。
JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。