【コード公開】【初心者のためのPython入門】Webスクレイピング〜画像データのダウンロード〜





独学に限界を感じたなら...
とりあえず独学でプログラミング学習を始めたけど、右も左も分からずあなたの時間が無駄に終わるどころか挫折するかもしれません。

あなたが時間を無駄にした分を回収したいなら【Python】2022年最新!おすすめのオンラインプログラミングスクールをご確認ください!

※期間限定で学習ロードマップを記載しています!

概要

今回は、Webスクレイピングを利用してWebサイトから画像データのダウンロードする方法を紹介します。
ライブラリ「urllib」を使ってダウンロードしてみましょう。
プログラムの概要としては以下のものです。

 

・指定したURLから任意の情報を取得する。

 

コードとしては以下のものです。

 

・ライブラリ「urllib」の取り込み。
・URLと保存パスを指定する。
・ダウンロードする。

 

それでは、ファイルエディタウィンドウを開いて、任意の名前.pyのファイルを作成・保存してください。

 

Web上の情報を取得する方法

Pythonでは、Webサイトにある画像データを取得すrために「urllibライブラリ」を使用します。
このライブラリを使うと、HTTPやFTPを利用して画像データをダウンロードすることができます。
ライブラリ「urllib」は、URLを扱うモジュールを集めたパッケージだということですね。
その中でも、「urllib.requestモジュール」は、Webサイトにある画像データにアクセスする機能を提供しています。
認証やリダイレクト、Cookieなど、インターネットで利用されるさまざまなリクエストや処理に対応しています。

 

urllib.requestを使ったダウンロード

最初に、Webサイトからファイルをダウンロードする方法から紹介します。
ファイルをダウンロードするには、urllib.requwstモジュールにあるurlretrieve()関数を利用します。
この関数を利用することによって、直接ファイルをダウンロードすることができます。
以下に記載するのは、Web上にアップされているPNGファイルを任意のファイル名で保存するプログラムになります。

 

# ライブラリの取り込み
import urllib.request

# URLと保存パスを指定
url = " https://su-gi-rx.com/wp-content/uploads/2017/07/Python.jpg"
savename = "test.png"

# ダウンロード
urllib.request.urlretrieve(url, savename)
print("保存しました")

 

Pythonのプログラムを確認してみましょう。
Pythonでライブラリを利用するためには、import文を利用して、ライブラリを取り込む必要があります。
上記のプログラムはurllib.requestモジュールを取り込んでいます。
「urllib.request」のように、ドット「.」で区切ってモジュールを指定していますが、これは「urllibパッケージの配下にあるrequestモジュールである」という意味になります。
ダウンロードの部分では、ファイルをダウンロードしています。
urlretrieve()の第1引数にURLを、第2引数に保存先のファイルパスを指定しています。

 

urlopen()でファイルに保存する方法

セッション3では、request.urlretrieve()関数を利用してファイルに保存していました。
セッション4では、request.urlopen()を利用する方法を紹介します。
request.urlopen()を使うと、直接ファイルに保存するのではなく、画像データがPythonのメモリ上に取得されます。
そこで、request.urlopen()を利用する場合には、メモリ上に取得した画像データを明示的にファイルに保存しています
「画像データを取得できた場合、取得したデータをファイルに保存する」といった流れになります。
以下にソースコードを記載します。

 

import urllib.request

# URLと保存パスを指定
url = " https://su-gi-rx.com/wp-content/uploads/2017/07/Python.jpg"
savename = "test.png"

# ダウンロード
png = urllib.request.urlopen(url).read()

# ファイルへ保存
with open(savename, mode="wb") as f:
	f.write(png)
	print("保存しました")

 

ダウンロードの部分では、urlopen()関数によってPNGファイルのURLリソースを開きます。
そのあとに、read()メソッドで画像データを読み取ります。
ファイルへの保存のコードでは、ファイルを開くopen()関数を利用してファイルを開きます。
ファイルの読み書きモードを表している「mode」を”wb”にしてファイルを開きます。
「w」は書き込みモードを表し、「b」はバイナリモードを表しています。
最後に、write()メソッドを利用して、ダウンロードしたバイナリデータをファイルに保存しています。

 

また、今後もプログラミングに取り組み続けていく中で、実務に利用できる学びを身につけていかなければなりません。

実務に活かす際に学習として利用していたPython本が以下のものになります。

・PythonによるWebスクレイピング(オライリー出版)

・増補改訂Pythonによるスクレイピング&機械学習 開発テクニック(クジラ飛行机)

・Pythonクローリング&スクレイピング – データ収集・解析のための実践開発ガイド

機械学習や分析の分野に興味があり、pythonを学びたいと思っている方は是非こちらもどうぞ↓

誰でも30日間で習得出来るpython学習法

 



ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、フリーランス活動経験を経て 2019年2月から起業し、今に至る。 自社サービス及び製品を開発、ブログ収入、クラウドソーシングなど、多方面で売り上げを立てている。