質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

322閲覧

flickrの画像情報抽出

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/03 09:57

前提・実現したいこと

flickrの画像のメタデータの抽出

発生している問題・エラーメッセージ

Traceback (most recent call last): File "geo-1.py", line 53, in <module> pprint(photos) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 53, in pprint printer.pprint(object) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 139, in pprint self._format(object, self._stream, 0, 0, {}, 0) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 167, in _format p(self, object, stream, indent, allowance, context, level + 1) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 189, in _pprint_dict context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 346, in _format_dict_items context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 167, in _format p(self, object, stream, indent, allowance, context, level + 1) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 210, in _pprint_list context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 389, in _format_items context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 167, in _format p(self, object, stream, indent, allowance, context, level + 1) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 189, in _pprint_dict context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 346, in _format_dict_items context, level) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\pprint. py", line 176, in _format stream.write(rep) UnicodeEncodeError: 'cp932' codec can't encode character '\xe9' in position 15: illegal multibyte sequence

該当のソースコード

python

1 2import os 3 4import time 5import traceback 6 7import flickrapi 8from urllib.request import urlretrieve 9 10import sys 11from retry import retry 12from pprint import pprint 13 14flickr_api_key = "" 15secret_key = "" 16 17keyword = sys.argv[1] 18 19 20@retry() 21def get_photos(url, filepath): 22 urlretrieve(url, filepath) 23 time.sleep(1) 24 25 26if __name__ == '__main__': 27 28 flicker = flickrapi.FlickrAPI(flickr_api_key, secret_key, format='parsed-json') 29 response = flicker.photos.search( 30 text=keyword, 31 media='photos', 32 sort='relevance', 33 safe_search=1, 34 has_geo=1, 35 extras='url_q,license,geo' 36 ) 37 photos = response['photos'] 38 39 try: 40 if not os.path.exists('./image-data/' + keyword): 41 os.mkdir('./image-data/' + keyword) 42 43 for photo in photos['photo']: 44 url_q = photo['url_q'] 45 filepath = './image-data/' + keyword + '/' + photo['id'] + '.jpg' 46 get_photos(url_q, filepath) 47 48 except Exception as e: 49 traceback.print_exc() 50 51 photos = response['photos'] 52 pprint(photos)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のコードで特にエラーにはなりませんでした。

  • Python 3.6
  • Ubuntu 16.04

utf-8 でエンコードされた文字を Shiftjis に変換できないならば、print でなく、ファイルに保存してはどうでしょうか。

python

1import os 2import traceback 3import sys 4import time 5from urllib.request import urlretrieve 6 7import flickrapi 8 9# API 設定 10flickr_api_key = '' 11secret_key = '' 12 13 14if __name__ == '__main__': 15 keyword = sys.argv[1] 16 17 flicker = flickrapi.FlickrAPI( 18 flickr_api_key, secret_key, format='parsed-json') 19 20 print('accessing... ') 21 response = flicker.photos.search( 22 text=keyword, 23 media='photos', 24 sort='relevance', 25 safe_search=1, 26 has_geo=1, 27 extras='url_q,license,geo') 28 29 30 photos = response['photos'] 31 try: 32 out_dirpath = os.path.join('image_data', keyword) 33 os.makedirs(out_dirpath, exist_ok=True) 34 35 for photo in photos['photo']: 36 url = photo['url_q'] 37 out_path = os.path.join(out_dirpath, photo['id'] + '.jpg') 38 39 print('getting image...', url) 40 urlretrieve(url, out_path) 41 42 time.sleep(1) 43 except Exception as e: 44 traceback.print_exc() 45 46 from pprint import pprint 47 pprint(photos) 48

投稿2018/10/03 16:53

編集2018/10/03 16:55
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問