使用 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 中下载文件。