【Selenium × 実務】JavaでWebデータの自動取得&レポート化を実現する流れ

実務でWebから定期的にデータを取得し、レポート化して上司やチームに共有する……そんな場面、意外と多いのではないでしょうか?
この記事では、Java × Selenium を使って、Webデータの自動取得 → 整形 → レポート出力(Excel)までの一連の流れを、実務目線で丁寧に解説します。


◆この記事で得られること

  • JavaでのSelenium自動化の基本フロー
  • 実務でありがちな要件への対応例(ログイン・表データ取得・加工)
  • Apache POIによるExcelレポート出力の実装方法
  • 毎日定期実行するためのタスクスケジューリングのヒント

1. 開発環境の準備

まずはSeleniumとPOIをJavaで使うための環境を整えましょう。

使用ライブラリ

<!-- pom.xml(Mavenの場合) -->
<dependencies>
  <!-- Selenium -->
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.15.0</version>
  </dependency>
  <!-- WebDriver Manager(ドライバ管理を自動化) -->
  <dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.7.0</version>
  </dependency>
  <!-- Apache POI(Excel出力) -->
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
  </dependency>
</dependencies>

2. Webサイトにアクセスしてデータを取得

ログイン付きのページから、表形式のデータを取得する例を見てみましょう。

例:ログイン → テーブルからデータを取得

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

import java.util.List;

public class WebScraper {
    public static void main(String[] args) {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();

        try {
            // ログインページにアクセス
            driver.get("https://example.com/login");

            // ログイン処理
            driver.findElement(By.id("username")).sendKeys("your_id");
            driver.findElement(By.id("password")).sendKeys("your_pass");
            driver.findElement(By.id("login-button")).click();

            // ログイン後、データページに遷移
            driver.get("https://example.com/data");

            // 表のデータを取得
            List<WebElement> rows = driver.findElements(By.cssSelector("table tbody tr"));
            for (WebElement row : rows) {
                List<WebElement> cells = row.findElements(By.tagName("td"));
                System.out.println(cells.get(0).getText() + " | " + cells.get(1).getText());
            }

        } finally {
            driver.quit();
        }
    }
}

3. データを整形してExcelに出力(Apache POI)

取得したデータをExcel形式でレポートにまとめる方法です。

Excel出力のサンプルコード

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.util.List;
import java.util.Arrays;

public class ExcelReport {
    public static void main(String[] args) throws Exception {
        List<List<String>> data = Arrays.asList(
            Arrays.asList("日付", "売上"),
            Arrays.asList("2025-07-01", "10000"),
            Arrays.asList("2025-07-02", "12000")
        );

        Workbook wb = new XSSFWorkbook();
        Sheet sheet = wb.createSheet("売上レポート");

        for (int i = 0; i < data.size(); i++) {
            Row row = sheet.createRow(i);
            for (int j = 0; j < data.get(i).size(); j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue(data.get(i).get(j));
            }
        }

        FileOutputStream fileOut = new FileOutputStream("report.xlsx");
        wb.write(fileOut);
        fileOut.close();
        wb.close();
    }
}

4. 自動化の完成:全体フローの統合

これまでのコードを1つにまとめると、以下のような自動処理になります。

  1. Webにログイン
  2. データを取得
  3. 加工してリスト化
  4. Excelに出力
  5. (オプション)定時にバッチ実行する

5. スケジュール実行するには?

Windows環境であれば「タスクスケジューラ」、Linuxなら「cron」で定期実行可能です。
Javaアプリを.jar化しておけば、次のように呼び出せます。

java -jar WebScraperReport.jar

◆まとめ:Selenium+POIで実務が加速する

Webデータの取得からレポート出力まで自動化できると、毎日の手作業がぐっと減ります。
本記事をベースに、自社の要件に合わせて拡張していくことで、業務効率化やレポート精度の向上にも繋がるはずです。


関連記事のおすすめ

タイトルとURLをコピーしました