在 Python 中下载图片

Muhammad Maisam Abbas 2023年12月11日
  1. 使用 Python 中的 urllib 包下载图片
  2. 使用 Python 中的 requests 库下载图像
在 Python 中下载图片

本教程将讨论一些使用 Python 从互联网上下载图片的最主要方法。

使用 Python 中的 urllib 包下载图片

urllib是一个用于处理 URLs 的若干模块的集合。urllib.request 是一个用于打开和读取 URLs 内容的模块。在本教程中,我们将使用 Python 从 https://www.python.org/images/success/nasa.jpg 下载一个图片文件。在 urllib.request 模块中,有两种方法可以用来下载图片,下面将对其进行说明。

使用 urllib.request.urlretrieve(url, filename) 方法下载图片

下面的代码示例显示了我们如何使用 urlretrieve(url, filename) 方法在 Python 中下载一张图片。

import urllib.request

urllib.request.urlretrieve("https://www.python.org/images/success/nasa.jpg", "NASA.jpg")

print("download successful")

输出:

download successful

上面的代码将图片下载到当前工作目录。urlretrieve(url, filename) 方法将图像的 URL 和你想存储的文件名作为参数。urlretrieve(url, filename) 方法被列在官方文档的旧界面下,这意味着 urlretrieve(url, filename) 方法将在未来被弃用。

使用 urllib.request.urlopen(url) 方法下载图片

为了克服 urlretrieve(url, filename) 方法的不可避免的被弃用的现实,可以使用 urlopen(url) 方法进行文件处理。根据 Python 官方文档,urlopen(url) 方法用于打开任何 URL。

以下代码示例显示了如何使用具有文件处理功能的 urlopen(url) 方法下载图像。

import urllib.request

f = open("NASA2.jpg", "wb")
f.write(urllib.request.urlopen("https://www.python.org/images/success/nasa.jpg").read())
f.close()
print("download successful")

输出:

download successful

在上面的代码中,我们首先使用 open(filename, mode) 方法write binaries 模式下打开一个名为 NASA2.jpg 的文件。在下一行中,我们使用 write() 方法将从文件中的 URL 中读取的内容写入。之后,我们使用 close() 方法关闭文件。

使用 Python 中的 requests 库下载图像

requests 是一个 Python 库,我们可以用它来向服务器发送 HTTP/1.1 请求。我们可以使用 requests 库中的 get(url) 方法向 URL 发送 GET 请求,从 URL 中获取图片文件,然后使用文件处理保存。

下面的代码示例显示了我们如何使用带有文件处理功能的 requests 库下载图片。

import requests

f = open("NASA3.jpg", "wb")
response = requests.get("https://www.python.org/images/success/nasa.jpg")
f.write(response.content)
f.close()

print("download successful")

输出:

download successful

在上面的代码中,我们首先使用 open(filename, mode) 方法在 write binaries 模式下打开一个名为 NASA3.jpg 的文件。

在接下来的一行中,我们将 GET 请求的响应存储在变量-response 中。

之后,我们使用 write() 方法将 response 中的二进制内容写入文件。

最后,我们使用 close() 方法关闭文件。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Python Image