Pythonでスクレイピング(4)Flickr APIを使って画像収集

lecture

データの収集はFlickrの写真をクローリングします。今回の内容はFlicKrのAPIを使用してプログラムから収集する方法です。

作業フローは次の通りです。

  1. YahooアカウントでFlickrのAPIキーを取得
  2. ファイル一覧を取得
  3. プログラムでダウンロード
スポンサーリンク

Flickr API取得

FlickrのTopページ

  1. Flickr API取得のページから「Create an App」のリンクをクリックします。(下図参照)
  2. Get your API Key で「Request an API Key」をクリックしてYAHOO(US)のアカウントを求められますので、あればそれを入力します。無ければ、下方にあるSign upで新規で作成します。
  3. ログインするとトップページに戻るので再び1からの手順で「Request an API Key」をクリックします。
  4. 表示されたページで、商用利用しない場合は「Non-Commercial」の方の「APPLY FOR A NON-COMMERCIAL KEY」を選択します。
  5. Tell us about your app:の欄に必要事項を記入します。
    Whats the name of your app?には Animal filter
    Whats are you building? には Deep learning など
    チェック項目は著作権違反をしない確認と使用許諾に了承したということですから、2つともチェックをしてSUBMITします。
  6. Key と Secretコードが表示されますのでメモしておきます。

Flickr API導入方法

Flickr API導入コマンド

pip install flickrapi

Flickrにアクセスするプログラム

事前準備

作業用フォルダを作成して、添付の「download.py」のを作業用フォルダに入れておきます。

download.pyの内容解説

Flickrにアクセスするプログラムは以下のコードになります。

コード全部

from flickrapi import FlickrAPI
from urllib.request import urlretrieve
from pprint import pprint
import os, time, sys

# APIキーの情報
key = "取得したkey"
secret = "取得したsecret"
wait_time = 1 #1秒おきにリクエスト
imgname = sys.argv[1]
savedir = "./" + imgname
os.mkdir(savedir)

flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
text = imgname,
per_page = 10,
media = 'photos',
sort = 'relevance',
safe_search = 1,
extras = 'url_q, licence'
)
photos = result['photos']
for i, photo in enumerate(photos['photo']):
url_q = photo['url_q']
filepath = savedir + '/' + photo['id'] + '.jpg'
if os.path.exists(filepath): continue
urlretrieve(url_q,filepath)
time.sleep(wait_time)

APIキー

download.pyコードの中の次の部分を取得したAPIキーデータに書き換えます。

key = "取得したキー"
secret = "取得したシークレットキー"

保存フォルダの指定

保存フォルダ名の指定はコマンド引数を使用しますので次のように記述しています。

コマンド引数に指定した値で画像を検索して取得します。

画像保存フォルダは自動作成して検索キーワード名がフォルダ名になります。

imgname = sys.argv[1]
savedir = "./" + imglname
os.mkdir(savedir)

per_page = 400が取得画像枚数。テストするときは10枚くらいでやってみる。

extras = ‘url_q, licence’は画像のURL取得とライセンス情報を取得

プログラムの実行

まずは「cd」コマンドでカレントディレクトを作業フォルダに移動します。
カレントディレクトリ移動は「cd」コマンドを入力後にファインダーで対象フォルダを選択後、そのフォルダをターミナルにドラッグ アンド ドロップすればOKです。

プログラムの実行コマンドは以下。最後のbirdは欲しいが画像の検索キーワードでこの例ではbirdの写真を取得

python download.py bird

**参考:Beejs Python Flickr API導入について

参考:Flickr API取得のページの下方にあるPython項目の「Beej’s Python Flickr API」をクリックして該当のページへ行きます。

タイトルとURLをコピーしました