playwright怎么把下载的文件保存到本地
时间: 2025-03-12 16:21:37 浏览: 53
### 使用 Playwright 将下载的文件保存到本地
为了使用 Playwright 实现文件下载并将其保存至本地,可以通过监听 `download` 事件来捕获下载动作,并利用 `download.path()` 获取已下载文件的实际路径。对于希望自定义保存位置的情况,可以在下载完成后移动文件。
下面是一个完整的 Python 脚本示例,展示了如何配置页面以触发下载并将文件保存到特定目录:
```python
import os
from playwright.sync_api import sync_playwright
def save_downloaded_file(file_path, target_dir):
"""将下载好的文件复制到目标文件夹"""
file_name = os.path.basename(file_path)
new_location = os.path.join(target_dir, file_name)
if not os.path.exists(target_dir):
os.makedirs(target_dir)
try:
os.rename(file_path, new_location)
print(f"File moved to {new_location}")
except Exception as e:
print(e)
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
# 设置下载路径
downloads_path = "./downloads"
page.set_download_path(downloads_path)
# 访问含有可下载资源的网页
page.goto('https://example.com/page-with-download')
# 触发下载操作 (假设有一个按钮点击会引发下载)
with page.expect_download() as download_info:
page.click("text=Download File")
download = download_info.value
# 打印建议的文件名
suggested_filename = download.suggested_filename
print(f"Suggested filename is '{suggested_filename}'.")
# 等待下载完成并处理下载后的文件
downloaded_file_path = download.path()
print(f"The actual path of the downloaded file is: {downloaded_file_path}")
# 移动文件到期望的位置
save_downloaded_file(downloaded_file_path, downloads_path)
browser.close()
```
此脚本首先启动了一个 Chromium 浏览器实例,在访问包含下载链接的目标网站之后模拟用户交互行为(比如点击某个按钮),从而触发下载过程。当检测到有新的下载发生时,程序记录下推荐的文件名称以及实际存储路径;最后一步则是把临时存放于默认位置中的文件转移到预先设定的目的地中去[^2]。
阅读全文
相关推荐


















