使用 Python 通过 HTTP 下载文件


在 Python 中,我们使用 Python 内置库(如 **urllib**、**request** 和 **httplib**)通过 HTTP 下载文件。HTTP 是超文本传输协议,用于通过万维网访问数据。HTTP 请求通常由客户端(例如 Web 浏览器)发起,并发送到托管请求资源的服务器。请求通常包含方法(例如 GET 或 POST)、标识资源的统一资源定位符 (URL) 以及提供有关请求的其他信息的可选标头。在本文中,我们将了解如何使用 urllib 和 request 库来下载文件。

使用 urllib 下载文件

Urllib 包含诸如 urllib.request 之类的子模块,可用于轻松地从互联网下载文件。urllib.request 以文件的 URL 和您要赋予下载文件的名称作为输入。

语法

urllib.request.urlretrieve(URL, filename)

这里 **urllib.request.urlretrieve** 接受两个参数。一个是互联网上文件的 URL,另一个是您要赋予下载文件的名称。

示例

在下面的示例中,要使用 urllib 库通过 HTTP 下载文件,首先导入 urllib.request 模块,然后调用 urllib.request 模块的 urlretrive 函数。传递要下载的文件的 URL 和下载文件后要保留的文件名。

如果传递了无效的 URL 或文件不可下载,则会引发异常。

import urllib.request
from PIL import Image

url = 'https://www.pythonlang.cn/static/img/python-logo.png'
filename = 'python-logo.png'

urllib.request.urlretrieve(url, filename)

with open(filename, 'rb') as f:
   image = Image.open(f)
   image.show()

输出

使用 requests 库下载文件

requests 库使用其 get 方法在 Python 中发出 HTTP 请求。它只需将文件的 URL 作为输入,并发出 get 请求以下载文件,并将下载的文件作为响应返回。

语法

requests.get(URL)

这里在 **requests.get()** 方法中,URL 是要通过互联网下载的文件的 URL。

示例

在下面的示例中,我们导入 requests 库并指定我们要下载的文件的 URL 和我们要赋予下载文件的名称。然后,我们导入 requests 库并使用 requests.get() 方法下载 Python 徽标。该方法返回一个包含文件内容的响应对象。最后,我们读取下载的文件并将其打印到屏幕上。

import requests

url = 'https://www.pythonlang.cn/static/img/python-logo.png'
filename = 'python-logo.png'

response = requests.get(url)

from PIL import Image

with open(filename, 'rb') as f:
   image = Image.open(f)
   image.show()

输出

结论

在本文中,我们讨论了如何使用 Python 内置库(如 urllib 和 requests 库)通过 HTTP 在 Python 中下载文件。requests 库提供了更高级别的接口,并且比 urllib 更易于使用。requests 库提供了比 urllib 库更简单的方法来下载文件。任何库都可以用于在 Python 中下载文件。

更新于: 2023年7月10日

449 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告