TwitterのAPIを使って特定の単語が含まれるツイートを入手し、txtファイルで保存したいのですが、ある程度のツイートを取得した後、結果で以下のようなエラーが出ます。
1114878911777628160 橋本環奈はやっぱりかわいいなぁ… Sun Apr 07 13:13:40 +0000 2019 ------------------------------------------------------------------ 1114878819909820418 RT @722731: Twitterやってる人の中で春から橋本環奈だよ!って人いないかな? 春から橋本環奈になる人はリツイートお願いします(>_<;) #春から橋本環奈 #橋本環奈と繋がりたい Sun Apr 07 13:13:18 +0000 2019 (一部略) Traceback (most recent call last): File "0410word2vec_twitter.py", line 50, in <module> data = response.json()['statuses'] KeyError: 'statuses'
エラーから検索して解決策を探しましたが、上手く処理できませんでした。
(APIの回数制限の問題と捉えて良いでしょうか?)
KeyErrorを出さないための解決策や、そこまで取得したツイートを保存できるようなやり方がもしあるなら教えていただきたいです。
コードは以下のようになります。
よろしくお願いします。
Python
1# -*- coding: utf-8 -*- 2from requests_oauthlib import OAuth1Session, OAuth1 3import json 4import requests 5import urllib 6import sys 7import io 8 9#検索文字列設定 10word = "橋本環奈" 11# デフォルト文字コードをutf8に変更 12sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 13args = sys.argv 14 15#apiキー情報設定 16consumer_key = "X" 17consumer_key_secret = "X" 18access_token = "X" 19access_token_secret = "X" 20 21#twitterAPIアクセス 22url = "https://api.twitter.com/1.1/search/tweets.json?count=100&lang=ja&q=" + word 23auth = OAuth1(consumer_key, consumer_key_secret, access_token, access_token_secret) 24response = requests.get(url, auth = auth) 25data = response.json()['statuses'] 26 27Tweet = [] 28 29#データ表示 30cnt = 0 31while True: 32 for tweet in data: 33 print("------------------------------------------------------------------") 34 print(tweet["id"])#ツイートID 35 print(tweet["text"])#ツイート内容 36 print(tweet["created_at"])#ツイート日時 37 cnt += 1 38 maxid = int(tweet["id"]) - 1 39 Tweet.append(tweet["text"]) 40 41 #ツイートがない場合ループ終了 42 if len(data) == 0: 43 break 44 45 url = "https://api.twitter.com/1.1/search/tweets.json?count=100&lang=ja&q=" + word + "&max_id=" + str(maxid) 46 auth = OAuth1(consumer_key, consumer_key_secret, access_token, access_token_secret) 47 response = requests.get(url, auth = auth) 48 data = response.json()['statuses'] 49 50print("ツイート数:" + str(cnt)) 51 52with open('0410tweet_hasimotokannna.txt', "w",encoding="utf-8") as f: 53 f.writelines(Tweet)
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/04/11 03:54