DrissionPage下载文件
在DrissionPage中,下载时直接重命名文件可通过以下两种方式实现:
方法一:动态修改下载路径(推荐)
在点击下载按钮前,将download_path
设置为包含目标文件名的完整路径:
# 动态生成目标文件名(示例)
new_filename = f"{product_name}_{download_time}.pdf"
target_path = os.path.join(EPD_FILE_PATH, new_filename)# 设置下载路径(包含文件名)
page.set.download_path(target_path) # 关键修改# 点击下载按钮
pdf_btn.click()
mission = page.wait.download_begin()
mission.wait(show=True)print(f'文件已保存为:{mission.final_path}')
方法二:下载后重命名(备选)
若无法在下载时指定文件名,可下载后立即重命名:
import os
import time# 保持原有下载逻辑
page.set.download_path(EPD_FILE_PATH)
pdf_btn.click()
mission = page.wait.download_begin()
mission.wait(show=True)# 获取原始文件名并重命名
original_path = mission.final_path
timestamp = time.strftime("%Y%m%d_%H%M%S")
new_filename = f"报告_{timestamp}.pdf"
new_path = os.path.join(EPD_FILE_PATH, new_filename)os.rename(original_path, new_path)
print(f'文件已重命名为:{new_path}')
关键说明:
- 推荐方法一:通过修改
download_path
为完整路径(含文件名),浏览器会直接使用该文件名保存,无需后续重命名操作 - 文件命名建议:使用动态生成的文件名(如包含时间戳/产品ID),避免重复
- 路径处理:确保目标路径的目录存在,否则需先创建目录
- 权限检查:确保程序有目标路径的写入权限
⚠️ 注意:如果服务器端强制指定了文件名(通过Content-Disposition头),方法一可能失效。此时需使用方法二,或通过浏览器开发者工具分析下载请求的响应头,确认是否可自定义文件名。