2016-02-16 1 views
0

Я пытаюсь извлечь данные из Twitter более месяца или около того для проекта. Есть < 10000 твитов за этот период времени с этим хэштегом, но я только, кажется, получаю все твиты с текущего дня. Вчера я получил 68 и 80 сегодня; оба были отмечены с сегодняшним днем.twitter API ограничивает твиты до одного дня, tweepy

api = tweepy.API(auth) 
igsjc_tweets = api.search(q="#igsjc", since='2014-12-31', count=100000) 

ipdb> len(igsjc_tweets) 
80 

Я точно знаю, что должно быть более 80 твитов. Я слышал, что ставки на Twitter превышают 1500 твитов за раз, но также ли это ограничение скорости до определенного дня? Обратите внимание, что я также попробовал Cursor подход с

igsjc_tweets = tweepy.Cursor(api.search, q="#igsjc", since='2015-12-31', count=10000) 

Это также только получает мне 80 твитов. Любые советы или предложения о том, как получить полные данные, будут оценены.

ответ

0

Вот official tweepy tutorial on Cursor. Примечание: вам необходимо выполнить итерацию через Cursor, как показано ниже. Кроме того, есть максимальное количество, которое вы можете пройти .items(), поэтому, вероятно, неплохо потянуть месяц за месяцем или что-то подобное и, вероятно, хорошая идея в sleep между звонками. НТН!

igsjc_tweets_jan = [tweet for tweet in tweepy.Cursor(
        api.search, q="#igsjc", since='2016-01-01', until='2016-01-31').items(1000)] 
+0

Я только что прочитал, что поиск API имеет только твиты, которые около недели старый. Есть ли способ обойти это? – goodcow

+0

Я думаю, что если вы читаете пользовательские сроки, вы можете получить твиты старше одной недели. [Здесь] (http://stackoverflow.com/questions/24214189/how-can-i-get-tweets-older-than-a-week-using-tweepy-or-other-python-libraries) является ссылкой на другой подобный вопрос SO. Самый полезный ответ для вас будет тот, который ссылается на репозиторий GetOldTweets [здесь] (https://github.com/Jefferson-Henrique/GetOldTweets-python) – Kevin

0

Во-первых, tweepy не может принести слишком старые данные, используя свой поисковый API я не знаю точное ограничение, но, может быть, месяц или два назад только.

в любом случае, вы можете использовать этот кусок кода для получения твитов. Я запускаю его, чтобы получить твиты за последние несколько дней, и это работает для меня.

обратите внимание, что вы можете уточнить и добавить геокодирования информацию - я оставил пример закомментирована для вас

flag = True 
last_id = None 
while (flag): 
    flag = False 
    for status in tweepy.Cursor(api.search, 
          #q='geocode:"37.781157,-122.398720,1mi" since:'+since+' until:'+until+' include:retweets', 

          q="#igsjc", 
          since='2015-12-31', 

          max_id=last_id, 
          result_type='recent', 
          include_entities=True, 
          monitor_rate_limit=False, 
          wait_on_rate_limit=False).items(300): 
     tweet = status._json 
     print(Tweet) 

     flag = True # there still some more data to collect 
     last_id = status.id # for next time 

Успехов

+0

У вас был какой-то успех? Он возвращает твиты до даты «с». –

+1

@JasonVondersmith - я помню, как он работал, как и ожидалось (это было 1,5 года назад). Какая ценность проходит в "since"? –

+0

since = "2017-10-10" Я пытаюсь использовать код в: https://stackoverflow.com/questions/46864633/tweepy-not-filtering-on-since?noredirect=1#comment80719157_46864633 –