DrissionPage/docs/使用方法/下载文件.md
2022-01-18 17:01:27 +08:00

2.2 KiB
Raw Blame History

selenium 缺乏对浏览器下载文件的有效管理,难以进行检测下载状态、重命名、失败管理。
使用 requests 下载文件能较好实现以上功能,但代码较为繁琐。
因此 DrissionPage 封装了download()方法,整合了两者优点,可从 selenium 获取登录信息,用 requests 进行下载。弥补了 selenium 的不足,使下载简洁高效。

功能

  • 支持 d 模式下用 requests 下载文件
  • 可指定下载路径,若路径不存在会自动创建文件夹
  • 重命名文件,可不填写扩展名,程序自动补充
  • 存在同名文件时,可选择重命名、覆盖、跳过等处理方式
  • 显示下载进度
  • 支持 post 方式
  • 支持自定义连接参数

download() 方法

参数:

  • file_ur文件 url
  • goal_path存放路径填写到文件夹不填写文件名
  • rename重命名文件可不写扩展名不输入则用网络文件原名
  • file_exists若存在同名文件可选择'rename','overwrite','skip'方式处理,若选择重命名,会在文件名后面添加序号
  • post_datapost 方式的数据,这个参数不为None时自动转成 post 方式
  • show_msg是否显示下载信息和进度
  • show_errmsg出现异常时是否显示和抛出
  • retry重试次数与页面对象的设置一致默认 3 次
  • interval重试间隔时间与页面对象的设置一致默认 2 秒
  • **kwargs连接参数s 模式专用,与 requests 的一致

返回:下载是否成功(bool)和状态信息(成功时信息为文件路径)的元组,跳过时第一位返回 None

示例

from DrissionPage import MixPage

page = MixPage()
# 文件 url
url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'  
# 存放路径
save_path = r'C:\download'  

# 重命名为img.png存在重名时自动在文件名末尾加上序号显示下载进度
res = page.download(url, save_path, 'img', 'rename', show_msg=True)
# 打印结果
print(res)

显示:

https://www.baidu.com/img/flexible/logo/pc/result.png
result.png -> img.png
正在下载到C:\download
100% C:\download\img.png 

(True, 'C:\\download\\img.png')