在 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