実務で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つにまとめると、以下のような自動処理になります。
- Webにログイン
- データを取得
- 加工してリスト化
- Excelに出力
- (オプション)定時にバッチ実行する
5. スケジュール実行するには?
Windows環境であれば「タスクスケジューラ」、Linuxなら「cron」で定期実行可能です。
Javaアプリを.jar
化しておけば、次のように呼び出せます。
java -jar WebScraperReport.jar
◆まとめ:Selenium+POIで実務が加速する
Webデータの取得からレポート出力まで自動化できると、毎日の手作業がぐっと減ります。
本記事をベースに、自社の要件に合わせて拡張していくことで、業務効率化やレポート精度の向上にも繋がるはずです。