Загрузки
Введение
Для каждого вложения, загружаемого страницей, генерируется событие page.on("download"). Все эти вложения загружаются во временную папку. Вы можете получить URL загрузки, имя файла и поток данных, используя объект Download из события.
Вы можете указать, где сохранять загруженные файлы, используя опцию downloads_path в browser_type.launch().
Загруженные файлы удаляются, когда контекст браузера, который их создал, закрывается.
Вот самый простой способ обработки загрузки файла:
- Sync
- Async
# Начать ожидание загрузки
with page.expect_download() as download_info:
# Выполнить действие, инициирующее загрузку
page.get_by_text("Download file").click()
download = download_info.value
# Дождаться завершения процесса загрузки и сохранить загруженный файл куда-либо
download.save_as("/path/to/save/at/" + download.suggested_filename)
# Начать ожидание загрузки
async with page.expect_download() as download_info:
# Выполнить действие, инициирующее загрузку
await page.get_by_text("Download file").click()
download = await download_info.value
# Дождаться завершения процесса загрузки и сохранить загруженный файл куда-либо
await download.save_as("/path/to/save/at/" + download.suggested_filename)
Вариации
Если вы не знаете, что инициирует загрузку, вы все равно можете обработать событие:
- Sync
- Async
page.on("download", lambda download: print(download.path()))
async def handle_download(download):
print(await download.path())
page.on("download", handle_download)
Обратите внимание, что обработка события разветвляет поток управления и делает скрипт труднее для понимания. Ваш сценарий может завершиться, пока вы загружаете файл, так как ваш основной поток управления не ожидает завершения этой операции.
Для загрузки файлов смотрите раздел загрузка файлов.