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

60 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
## 示例
```python
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')
```