概要
今回は、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を学びたいと思っている方は是非こちらもどうぞ↓