Есть ли лучший / более быстрый способ запросить в Твиттере исторические твиты, содержащие строку?

Итак, я пытаюсь получить все твиты, которые соответствуют определенным критериям поиска, начиная с определенного года (на данный момент я просто вытаскиваю 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, поэтому не знаю, как лучше всего добиться того, чего я хочу. Мой код представляет собой смесь нескольких статей / ответов, которые я видел в другом месте, поэтому я уверен, что с моим методом, вероятно, есть несколько проблем. Какие-либо предложения?


person SuperHanz98    schedule 21.12.2020    source источник


Ответы (1)


Вы можете проверить эту документацию developer.twitter.com

person Onur Baskin    schedule 21.12.2020