ダウンロード
はじめに
ページによってダウンロードされる添付ファイルごとに、page.on("download") イベントが発行されます。これらの添付ファイルはすべて一時フォルダーにダウンロードされます。イベントからDownload オブジェクトを使用して、ダウンロード URL、ファイル名、およびペイロードストリームを取得できます。
browser_type.launch() の downloads_path オプションを使用して、ダウンロードしたファイルを保存する場所を指定できます。
注
ダウンロードされたファイルは、それらを生成したブラウザコンテキストが閉じられると削除されます。
ファイルダウンロードを処理する最も簡単な方法は次のとおりです。
- 同期
- 非同期
# Start waiting for the download
with page.expect_download() as download_info:
# Perform the action that initiates download
page.get_by_text("Download file").click()
download = download_info.value
# Wait for the download process to complete and save the downloaded file somewhere
download.save_as("/path/to/save/at/" + download.suggested_filename)
# Start waiting for the download
async with page.expect_download() as download_info:
# Perform the action that initiates download
await page.get_by_text("Download file").click()
download = await download_info.value
# Wait for the download process to complete and save the downloaded file somewhere
await download.save_as("/path/to/save/at/" + download.suggested_filename)
バリエーション
何がダウンロードを開始したのかわからない場合でも、イベントを処理できます。
- 同期
- 非同期
page.on("download", lambda download: print(download.path()))
async def handle_download(download):
print(await download.path())
page.on("download", handle_download)
イベントを処理すると制御フローが分岐し、スクリプトが追跡しにくくなることに注意してください。メインの制御フローがこの操作の解決を待っていないため、ファイルをダウンロードしている間にシナリオが終了する可能性があります。
注
ファイルをアップロードする方法については、「ファイルのアップロード」セクションを参照してください。