Python で画像をダウンロード

Muhammad Maisam Abbas 2023年12月11日
  1. Python で urllib パッケージを使って画像をダウンロードする
  2. Python の requests ライブラリを用いた画像のダウンロード
Python で画像をダウンロード

このチュートリアルでは、Python を使用してインターネットから画像をダウンロードする最も一般的な方法について説明します。

Python で urllib パッケージを使って画像をダウンロードする

urllib パッケージは、URL を操作するためのいくつかのモジュールのコレクションです。urllib.request は、URL のコンテンツを開いたり読み取ったりするために使われるモジュールです。このチュートリアルでは、Python を使って https://www.python.org/images/success/nasa.jpg から画像ファイルをダウンロードします。urllib.request モジュールでは、画像をダウンロードするために 2つの方法があり、以下で説明します。

urllib.request.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

上記のコードでは、まず NASA2.jpg というファイルを write binaries モードで open(filename, mode) メソッド を使って開きます。次の行では、ファイルの URL から読み込んだ内容を write() メソッドを用いて書き込む。その後、close() メソッドを用いてファイルを閉じます。

Python の requests ライブラリを用いた画像のダウンロード

requests](https://requests.readthedocs.io/en/master/) は 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

上記のコードでは、まず NASA3.jpg というファイルを write binaries モードで open(filename, mode) メソッドを使って開きます。

次の行では、GET リクエストからのレスポンスを変数 response に格納します。

その後、response のバイナリの内容を write() メソッドを用いてファイルに書き込みます。

最後に、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