首页 > 编程知识 正文

Python下载文件的几种方法

时间:2023-11-21 22:29:44 阅读:302811 作者:OWKM

本文将详细介绍Python下载文件的几种方法。

一、使用urllib库下载文件

import urllib.request

# 定义文件的url地址
url = "https://example.com/sample.pdf"

# 定义本地保存文件的路径和文件名
save_path = "./files/sample.pdf"

# 下载文件
urllib.request.urlretrieve(url, save_path)

使用urllib库的urlretrieve函数可以直接下载文件,通过指定文件的url地址和本地保存路径,函数会自动将文件下载到指定路径。

二、使用requests库下载文件

import requests

# 定义文件的url地址
url = "https://example.com/sample.pdf"

# 定义本地保存文件的路径和文件名
save_path = "./files/sample.pdf"

# 发起GET请求下载文件
response = requests.get(url)

# 将下载的文件保存到本地
with open(save_path, "wb") as file:
    file.write(response.content)

使用requests库发送GET请求,获取文件的二进制内容,然后将内容写入到本地文件中,实现文件的下载。

三、使用wget库下载文件

from wget import download

# 定义文件的url地址
url = "https://example.com/sample.pdf"

# 定义本地保存文件的路径和文件名
save_path = "./files/sample.pdf"

# 下载文件
download(url, save_path)

使用wget库的download函数可以直接下载文件,通过指定文件的url地址和本地保存路径,函数会自动将文件下载到指定路径。

四、使用urllib3库下载文件

import urllib3

# 创建urllib3的PoolManager对象
http = urllib3.PoolManager()

# 定义文件的url地址
url = "https://example.com/sample.pdf"

# 定义本地保存文件的路径和文件名
save_path = "./files/sample.pdf"

# 发起GET请求下载文件
response = http.request("GET", url)

# 将下载的文件保存到本地
with open(save_path, "wb") as file:
    file.write(response.data)

使用urllib3库的PoolManager对象发起GET请求,获取文件的二进制内容,然后将内容写入到本地文件中,实现文件的下载。

五、使用ftp下载文件

from ftplib import FTP

# 创建FTP对象并连接服务器
ftp = FTP("example.com")
ftp.login("username", "password")

# 定义文件的路径和文件名
file_path = "/remote_directory/sample.pdf"

# 定义本地保存文件的路径和文件名
save_path = "./files/sample.pdf"

# 下载文件
with open(save_path, "wb") as file:
    ftp.retrbinary("RETR " + file_path, file.write)

# 关闭FTP连接
ftp.quit()

使用ftplib库的FTP对象连接FTP服务器,通过指定文件的路径和文件名以及本地保存路径和文件名,通过retrbinary函数实现文件的下载。

六、使用selenium库下载文件

from selenium import webdriver

# 创建Chrome浏览器实例
driver = webdriver.Chrome()

# 设置浏览器下载文件的默认保存路径
# 注意:需要提前设置好浏览器的下载路径,并确保该路径存在
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-notifications")
chrome_options.add_experimental_option("prefs", {
    "download.default_directory": "/path/to/download/directory",
    "plugins.always_open_pdf_externally": True
})
driver = webdriver.Chrome(chrome_options=chrome_options)

# 定义文件的url地址
url = "https://example.com/sample.pdf"

# 下载文件
driver.get(url)

# 关闭浏览器
driver.quit()

使用selenium库模拟浏览器下载文件,通过设置浏览器的默认保存路径和下载参数,并使用get函数打开文件的url地址即可实现文件的下载。

七、使用tqdm库显示下载进度

import requests
from tqdm import tqdm

# 定义文件的url地址
url = "https://example.com/big_file.zip"

# 定义本地保存文件的路径和文件名
save_path = "./files/big_file.zip"

# 发起GET请求下载文件
response = requests.get(url, stream=True)

# 获取文件的总大小
file_size = int(response.headers["Content-Length"])

# 使用tqdm库显示下载进度
with open(save_path, "wb") as file, tqdm(total=file_size, unit="B", unit_scale=True) as progress_bar:
    for data in response.iter_content(chunk_size=1024):
        file.write(data)
        progress_bar.update(len(data))

使用tqdm库可以直观地显示文件的下载进度,首先根据文件的url地址发起GET请求,然后通过iter_content函数以分块的方式写入文件并更新进度条。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。