使用 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.python.org/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()
输出
使用请求库下载文件
请求库使用其 get 方法在 Python 中发出 HTTP 请求。它只需将文件的 URL 作为输入,并发出 get 请求以下载文件,然后返回下载的文件作为响应。
语法
requests.get(URL)
此处的 requests.get() 方法中的 URL 是要通过互联网下载的文件的 URL。
示例
在下面的示例中,我们导入请求库并指定要下载的文件的 URL 以及要为下载的文件指定的名称。然后,我们导入请求库并使用请求.get() 方法下载 Python 徽标。该方法返回包含文件内容的响应对象。最后我们读取下载的文件并将其打印在屏幕上。
import requests url = 'https://www.python.org/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 和请求库)在 Python 中通过 HTTP 下载文件。请求库提供了比 urllib 更高级别的接口,并且更加用户友好。与 urllib 库相比,请求库提供了一种更简单的文件下载方式。任何库都可用于在 Python 中下载文件。