💻️
スクレイピングとサーバー実行のサンプルコード(Java)

JavaでスクレイピングとWebサーバーを開発する手順を書いていきます。

開発の手順

環境構築

# Javaの開発環境構築
$ brew install --cask temurin
$ brew install gradle

# プロジェクトのディレクトリ作成
$ mkdir scraping_server
$ cd scraping_server

# プロジェクトの初期化
$ gradle init --type java-application

$ gradle init –type java-application のコマンドが実行完了したら、 以下のファイルが作成されていることを確認してください。この2つのファイルを編集して開発を進めていきます。

app/build.gradle ファイルの dependencies { … } の中に、以下の行を追加してください。

    implementation 'com.sparkjava:spark-core:2.2'
    implementation 'org.jsoup:jsoup:1.11.1'
    implementation 'com.google.code.gson:gson:2.4'

インストールしている外部パッケージは以下のものです。

Webサーバーの起動

App.java を以下の内容に変更します。

package scraping_server;

import static spark.Spark.*;

public class App {
  public static void main(String[] args) {
    port(3000);
    get("/", (req, res) -> "test");
  }
}

その後、以下コマンドを実行してから http://localhost:3000 にブラウザでアクセスすると、”test” の文字が表示されます。

$ gradle run これで、Webサーバーの起動ができました。

スクレイピングで取得した情報を表示する

App.java に以下の実装を追加します。

package scraping_server;

import static spark.Spark.*;
// パッケージを追加する
import java.util.*;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.google.gson.Gson;

public class App {
  // 関数を追加する
  public static String scraping() {
    try {
      var url = "https://en.wikipedia.org/wiki/List_of_programming_languages";
      Document doc = Jsoup.connect(url).get();

      Elements elements = doc.select(".div-col li");
      List<String> items = new ArrayList<String>();
      for (Element el : elements) {
        items.add(el.text());
      }

      Gson gson = new Gson();
      String itemsJson = gson.toJson(items);
      return itemsJson;
    } catch(IOException e) {
      System.err.println(e.getMessage());
      return "";
    }
  }

  public static void main(String[] args) {
    port(3000);
    // 追加した関数を使用する
    get("/", (req, res) -> scraping());
  }
}

追加実装の後、 $ gradle run を再実行して http://localhost:3000 にアクセスすると、 Wikipediaのページから取得したプログラミング言語一覧の文字が表示されるようになります。