
Seleniumで業務自動化をしていると、必ず出てくるのがこの処理です。
✔ レポートを自動ダウンロード
✔ PDFを自動保存
✔ CSVを毎日取得
この記事では、
-
ダウンロードフォルダの指定方法
-
Chromeで確認画面を出さずに保存する方法
-
PDFを自動保存する方法
-
ダウンロード完了を待機する方法
を、実務で使える形で解説します。
1️⃣ Seleniumでダウンロードを自動化する基本設定
Chromeは通常、
「保存しますか?」
という確認ダイアログを出します。
これを無効化します。
🔹 ダウンロードフォルダを指定するコード
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
download_path = os.path.abspath("downloads")
options = Options()
options.add_experimental_option(
"prefs",
{
"download.default_directory": download_path,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
}
)
driver = webdriver.Chrome(options=options)
これで:
✔ 指定フォルダに保存
✔ 確認画面なし
✔ 上書き許可
になります。
2️⃣ ダウンロードボタンをクリックする
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
download_btn = wait.until(
EC.element_to_be_clickable((By.ID, "download"))
)
download_btn.click()
3️⃣ ダウンロード完了を待機する方法(重要)
Seleniumはダウンロード完了を自動では待ちません。
Chromeはダウンロード中、
という拡張子になります。
これを監視します。
🔹 完了待機コード
import time
import os
def wait_for_download(path, timeout=30):
seconds = 0
while seconds < timeout:
files = os.listdir(path)
if any(file.endswith(".crdownload") for file in files):
time.sleep(1)
seconds += 1
else:
return True
return False
wait_for_download(download_path)
これで、
ダウンロード完了まで待機
できます。
download_path は、
Seleniumでダウンロードしたファイルが保存されるフォルダのパスです。
例えば次のようなパスになります。
C:\Users\user\selenium_project\downloads
このフォルダの中に、Seleniumでダウンロードしたファイルが保存されます。
今回のコードでは、このフォルダを監視して .crdownload が無くなる=ダウンロード完了 を判定しています。
4️⃣ PDFを自動保存する方法
通常ChromeはPDFをブラウザ表示します。
自動保存するには設定が必要です。
🔹 PDF自動保存設定
options.add_experimental_option(
"prefs",
{
"download.default_directory": download_path,
"download.prompt_for_download": False,
"plugins.always_open_pdf_externally": True
}
)
これでPDFは直接保存されます。
5️⃣ ヘッドレスモードでダウンロードする場合
ヘッドレスでは追加設定が必要です。
options.add_argument("--headless=new")
さらにCDP設定:
driver.execute_cdp_cmd( "Page.setDownloadBehavior", {"behavior": "allow", "downloadPath": download_path} )
※ Selenium4以降で使用可能。
6️⃣ よくあるエラーと原因
❌ ダウンロードされない
→ default_directoryが絶対パスでない
❌ headlessで動かない
→ setDownloadBehavior未設定
❌ element not interactable
→ 明示的待機不足
7️⃣ 業務自動化でよくある活用例
✔ 経理レポート自動取得
✔ EC売上CSV取得
✔ 取引履歴PDF保存
✔ 官公庁データ定期取得
タスクスケジューラと組み合わせると完全自動化できます。
まとめ
Seleniumでのダウンロード自動化は、
-
Chrome設定(prefs)
-
明示的待機
-
完了監視
この3点が重要です。