Итак, я пытаюсь получить все твиты, которые соответствуют определенным критериям поиска, начиная с определенного года (на данный момент я просто вытаскиваю X твитов и смотрю, вернет ли меня это количество к тому году, который меня интересует).
Критерий поиска - это просто строка, содержащаяся в твите. Так, например, «Apple». Я также пытаюсь отфильтровать RT.
Очевидно, что это будут сотни тысяч, а может быть, и миллионы твитов.
Чтобы попытаться добиться этого, я использовал Tweepy Twitter API:
def getTweets(searchValue, numOfTweets):
i = 0
tweetStream = tweepy.Cursor(twitterAPI.search, q=searchValue, tweet_mode="extended").items(numOfTweets)
f = open('csvfile.csv','w')
while True:
try:
for tweet in tweetStream:
if (tweet.full_text[0:2] != 'RT'):
print('Tweets processed:' + str(i))
f.write(str(formatTweet(tweet.full_text)))
f.write(str(tweet.created_at) + '\n')
i += 1
#Break here when all tweets in the stream have been processed
break
except tweepy.TweepError:
print('Sleeping for 2 mins to maintain Twitter API connection... \n')
time.sleep(120)
f.close()
return True
Проблема в том, что это работает невероятно медленно. Получение примерно 50 твитов в секунду. Если мне нужно вернуться на несколько лет назад, это будет означать, что моя программа будет работать на несколько дней / недель.
Раньше я не использовал Tweepy, поэтому не знаю, как лучше всего добиться того, чего я хочу. Мой код представляет собой смесь нескольких статей / ответов, которые я видел в другом месте, поэтому я уверен, что с моим методом, вероятно, есть несколько проблем. Какие-либо предложения?