mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
60 lines
2.2 KiB
Markdown
60 lines
2.2 KiB
Markdown
selenium 缺乏对浏览器下载文件的有效管理,难以进行检测下载状态、重命名、失败管理。
|
||
使用 requests 下载文件能较好实现以上功能,但代码较为繁琐。
|
||
因此 DrissionPage 封装了`download()`方法,整合了两者优点,可从 selenium 获取登录信息,用 requests 进行下载。弥补了 selenium 的不足,使下载简洁高效。
|
||
|
||
## 功能
|
||
|
||
- 支持 d 模式下用 requests 下载文件
|
||
- 可指定下载路径,若路径不存在会自动创建文件夹
|
||
- 重命名文件,可不填写扩展名,程序自动补充
|
||
- 存在同名文件时,可选择重命名、覆盖、跳过等处理方式
|
||
- 显示下载进度
|
||
- 支持 post 方式
|
||
- 支持自定义连接参数
|
||
|
||
## download() 方法
|
||
|
||
参数:
|
||
|
||
- file_ur:文件 url
|
||
- goal_path:存放路径,填写到文件夹,不填写文件名
|
||
- rename:重命名文件,可不写扩展名,不输入则用网络文件原名
|
||
- file_exists:若存在同名文件,可选择`'rename'`,`'overwrite'`,`'skip'`方式处理,若选择重命名,会在文件名后面添加序号
|
||
- post_data:post 方式的数据,这个参数不为`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')
|
||
```
|
||
|