2015-05-21 45 views
4

我把微博從今日美國允許的最大數量這是3000獲取鳴叫按日期tweepy

現在我想創建一個腳本來自動拉今日美國的鳴叫晚上11:59每一天。

我打算使用流api,但後來我必須讓它整天保持運行。

我可以瞭解如何創建一個腳本,它在每天晚上11:59運行REST API來提取當天的tweets?如果沒有人知道如何根據日期拉推文?

我正在考慮在我的for循環中放置一個ifelse語句,但這似乎效率低下,因爲它每晚都必須搜索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

這是工作正常,但造成無限循環。腳本得到的tweets但控制不回來。 – addcolor

+0

來自tweepy文檔: page_limit = 20 for page in tweepy.Cursor(api.user_timeline).pages(page_limit): process_page(page) –