2015-05-21 4 views
4

Я вытащил максимальное количество твитов позволило из USAToday, который был 3000.Попадая твиты по дате с tweepy

Теперь я хочу, чтобы создать скрипт для автоматического тянуть твиты USAToday в 11:59 вечера каждый день.

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

Могу ли я получить представление о том, как создать скрипт, где он запускает REST API каждую ночь в 23:59, чтобы вытащить твиты дня? Если никто не знает, как тянуть твиты, основанные на дате?

Я думал о размещении инструкции ifelse в цикле for, но это кажется неэффективным, потому что ему придется искать по 3000 твитов каждую ночь.

Это то, что я сейчас:

client = MongoClient('localhost', 27017) 
db = client['twitter_db'] 
collection = db['usa_collection'] 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token_key, access_token_secret) 

api = tweepy.API(auth) 

for tweet in tweepy.Cursor(api.user_timeline,id='USATODAY').items(): 
    collection.insert(tweet._json) 

ответ

6

Вы можете просто получить твиты с помощью страниц, теперь на каждой странице получили вы перебирать твиты и извлекать время создания этого твита, который доступный с использованием tweet.created_at, и вы найдете разницу между извлеченной датой и текущей датой, если разница меньше 1 дня, тогда это благоприятный твит, иначе вы просто выйдете из цикла.

import tweepy, datetime, time 

def get_tweets(api, username): 
    page = 1 
    deadend = False 
    while True: 
     tweets = api.user_timeline(username, page = page) 

     for tweet in tweets: 
      if (datetime.datetime.now() - tweet.created_at).days < 1: 
       #Do processing here: 

       print tweet.text.encode("utf-8") 
      else: 
       deadend = True 
       return 
     if not deadend: 
      page+=1 
      time.sleep(500) 

get_tweets(api, "anmoluppal366") 

Примечание: вы не доступ ко всем 3000 твитов этого человека, вы итерацию только над теми твитов, которые были созданы в промежутке 24 часов в момент запуска приложения.

+0

Это работает корректно, но вызывает бесконечный цикл. Сценарий получает твиты, но контроль не возвращается. – addcolor

+0

От tweepy docs: page_limit = 20 для страницы в tweepy.Cursor (api.user_timeline) .pages (page_limit): process_page (страница) –

Смежные вопросы