本文将详细介绍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函数以分块的方式写入文件并更新进度条。