Я пытаюсь загрузить твиты, используя их идентификатор и библиотеку Twython. Я настроил приложение для твиттера. По какой-то причине я могу отправить только 6 запросов, прежде чем получит ошибку, хотя я вижу, что для функции show_statuses у меня есть 900 запросов в 15-минутное окно.
Вот некоторые результаты успешной отправки запроса, я удалил текст твита для конфиденциальности и заменил на ____
{'limit': 900, 'remaining': 854, 'reset': 1537123863}
____
id 551659627872415744
category racism
Когда я удаляю попытку, за исключением того, что я получаю эту ошибку
Traceback (most recent call last):
File "grabtweets.py", line 51, in <module>
df['tweet'] = df.apply(getTweet,axis=1)
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 4877, in apply
ignore_failures=ignore_failures)
File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 4973, in _apply_standard
results[i] = func(v)
File "grabtweets.py", line 35, in getTweet
tweet = twitter.show_status(id=int(row['id']))
File "/anaconda3/lib/python3.6/site-packages/twython/endpoints.py", line 94, in show_status
return self.get('statuses/show/%s' % params.get('id'), params=params)
File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 270, in get
return self.request(endpoint, params=params, version=version)
File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 264, in request
api_call=url)
File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 199, in _request
retry_after=response.headers.get('X-Rate-Limit-Reset'))
twython.exceptions.TwythonError: ('Twitter API returned a 403 (Forbidden), User has been suspended.', 'occurred at index 6')
и это мой код
client = Twython(creds['consumer_key'],
creds['consumer_secret'],oauth_version=2)
ACCESS_TOKEN = client.obtain_access_token()
twitter = Twython(creds['consumer_key'], access_token=ACCESS_TOKEN)
print(twitter.get_application_rate_limit_status()['resources']['statuses']['/statuses/show/:id'])
def getTweet(row):
print(row)
tweet = None
wait = 0
while tweet is None:
try:
print(twitter.get_application_rate_limit_status()['resources']['statuses']['/statuses/show/:id'])
tweet = twitter.show_status(id=int(row['id']))
wait = 0
except TwythonError:
time.sleep(2)
wait += 2
print("time -",wait)
pass
print(tweet['text'])
return tweet['text']
df = pd.read_csv("NAACL_SRW_2016.csv", names=['id','category'])
df['tweet'] = df.apply(getTweet,axis=1)
df['id'].to_csv('tweets.csv',index=False)
Я также пытался ждать между запросами в твиттере, которые работают, если я отправляю их слишком быстро, и именно поэтому я получаю эту ошибку.
Любая помощь будет принята с благодарностью.