こんにちは。
大学の研究で必要な画像をPythonを使ってTwitterから自動収集したく、試しに加藤純一の画像を集めるコードを書いたのですが、戻り値が上手く設定できていないのか、エラーが起きてしまいました。
使用しているエディターはjupyter notebookです。
Python
1from requests_oauthlib import OAuth1Session 2from time import sleep 3import urllib.request as req 4import json, os 5 6CK = 'ー--------' 7CS = 'ー--------' 8AT = 'ー--------' 9ATS = 'ー--------' 10 11def search_tweet(search_word): 12 url = 'https://api.twitter.com/1.1/search/tweets.json' 13 twitter = OAuth1Session(CK,CS,AT,ATS) 14 req = twitter.get(url,params = search_word) 15 16 if req.status_code == 200: 17 tweet = json.loads(req.text) 18 search_tweet = json.loads(req.text) 19 20 for tweet in search_tweet['statuses']: 21 print("(tweet id = " + tweet['id_str'] + ")") 22 print("-"*10) 23 tweet_id = tweet['id'] 24 return search_tweet,tweet_id 25 else: 26 print('ERROR:%d' % req.status_code) 27 28def save_img(tweet_json,save_dir): 29 if not os.path.exists(save_dir):os.makedirs(save_dir) 30 31 for tweet in tweet_json['statuses']: 32 name = tweet['user']['screen_name'] 33 date = tweet['created_at'] 34 date = date.replace(" +0000","") 35 date = date.replace("","-") 36 date = date.replace(":",",") 37 38 try: 39 media_list = tweet['entries']['media'] 40 for img in media_list: 41 img_url = img['media_url'] 42 path = save_dir + "/[" + str(name) + "]_" + str(date) + ".jpg" 43 print(path) 44 req.urlretrieve(img_url,path) 45 print("画像を保存しました",img_url) 46 print("-・"*30) 47 except Exception as e: 48 print("画像を保存できませんでした") 49 print("-・"*30) 50 51if __name__ == '__main__': 52 save_dir = "./for research image" 53 count = 3 54 tweet_id = 9999999999999999999 55 for i in range(count): 56 search_word = {'q' : "加藤純一 filter:images", 57 'count' : 1, 58 'result_type' : 'recent', 59 'max_id' : str(tweet_id-1), 60 'include_entities' : True 61 } 62 tweet_json, tweet_id = search_tweet(search_word) 63 save_img(tweet_json, save_dir) 64 if not i==count-1: sleep(10)
エラー個所は、下からの3行目の
Python
1tweet_json, tweet_id = search_tweet(search_word)
です。
エラー内容はcannot unpack non-iterable NoneType objectです。
エラーメッセージは
TypeError Traceback (most recent call last)
<ipython-input-18-eb01965726f7> in <module>
10 'include_entities' : True
11 }
---> 12 tweet_json, tweet_id = search_tweet(search_word)
13 save_img(tweet_json, save_dir)
14 if not i==count-1: sleep(10)
TypeError: cannot unpack non-iterable NoneType object
また、実行結果にERROR:403と出ました。