파이썬에서 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.pyfrom 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에서 얻을 수 있었다.
Reference
이 문제에 관하여(파이썬에서 flickr에서 이미지 데이터를 스크래핑하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zundokokiyoshi999/items/2c341c5c8b6be6df06f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install flickrapi
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}],
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)
Reference
이 문제에 관하여(파이썬에서 flickr에서 이미지 데이터를 스크래핑하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zundokokiyoshi999/items/2c341c5c8b6be6df06f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)