파이썬에서 flickr에서 이미지 데이터를 스크래핑하는 방법

Flickr 사용 방법



Flickr API에서 키 가져오기



먼저 Flickr 페이지로 이동 Request an API Key를 클릭한다. 여기에서 Flickr 계정을 만들지 않은 경우 만들고 로그인합니다.


좌측이 무상(비상법), 우측이 유상(상법)용이므로, 적선으로 둘러싸인 APPLY FOR A NON-COMMERICIAL KEY를 선택한다.


그러면 어플리케이션의 등록 화면이 표시되므로 어플리케이션에 사용하는 이름과 사용 용도를 기재하고, SUBMIT를 클릭한다.


등록 후, key 와 Secret 를 취득할 수 있으므로 메모장 등에 앞두고 둔다.


Flickr API에서 이미지를 검색하는 프로그램 만들기



다음 명령을 통해 Flickr 모듈을 설치합니다.
pip install flickrapi

프로그램을 실행하기 전에, 취득한 화상을 저장하는 폴더를 작성한다.

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


key = "取得したkey"
secret = "取得したSecret"
wait_time = 1

# コマンドラインの引数の1番目の値を取得。以下の場合は[cat]を取得
# python download.py cat 
animalname = sys.argv[1]
savedir = "./"+animalname


# format:受け取るデータ(jsonで受け取る)
flickr = FlickrAPI(key, secret, format='parsed-json')

"""
text : 検索キーワード
per_page : 取得したいデータの件数
media : 検索するデータの種類
sort : データの並び
safe_seach : UIコンテンツの表示有無
extras : 取得したいオプションの値(url_q 画像のアドレス情報)
"""
result  = flickr.photos.search(
    text = animalname,
    per_page = 400,
    media = 'photos',
    sort = 'relevance',
    safe_seach = 1,
    extras = 'url_q, licence'
)

# 結果
photos = result['photos']
pprint(photos)


위의 프로그램을 실행하고 성공하면 다음과 같은 표시가 나타납니다.
           {'farm': 5,
            'height_q': 150,
            'id': '4375810205',
            'isfamily': 0,
            'isfriend': 0,
            'ispublic': 1,
            'owner': '47750313@N07',
            'secret': '8d0a7d24a1',
            'server': '4008',
            'title': 'cat',
            'url_q': 'https://live.staticflickr.com/4008/4375810205_8d0a7d24a1_q.jpg',
            'width_q': 150},
           {'farm': 1,
            'height_q': 150,
            'id': '27083352608',
            'isfamily': 0,
            'isfriend': 0,
            'ispublic': 1,
            'owner': '144380504@N04',
            'secret': 'd1cd159107',
            'server': '811',
            'title': 'cat',
            'url_q': 'https://live.staticflickr.com/811/27083352608_d1cd159107_q.jpg',
            'width_q': 150}],

'url_q'에 등록된 URL을 얻고 urllib을 사용하여 이미지 데이터를 얻는다.

방금 프로그램에 이미지 데이터를 얻는 프로그램을 추가합니다.
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)
   # サーバーに負荷がかからないよう、1秒待機する
    time.sleep(wait_time)

"cat"을 인수로 프로그램 실행 후 고양이의 이미지를 Flickr에서 얻을 수 있었다.

좋은 웹페이지 즐겨찾기