2014-05-11 52 views
3

如何使用Twython檢索例如在紐約說「#Accounting」的所有推文?如何從Twitter搜索或使用Twython的流式API獲取超過100條推文

我使用Twitter搜索API,但我只能獲得100條推文。

然後我嘗試使用Twitter流式過濾器API,但無法通過地理定位縮小範圍,而且似乎需要永久使用。我讀過,我們應該把所有這些推文放到一個數據庫中,然後在那裏做聚合,但我想知道是否有其他方法可以快速做某件事。

這裏是我的代碼:

from twython import Twython 

TWITTER_APP_KEY = 'XXXX' 
TWITTER_APP_KEY_SECRET = 'XXXX' 
TWITTER_ACCESS_TOKEN = 'XXXX' 
TWITTER_ACCESS_TOKEN_SECRET = 'XXXX' 

t = Twython(app_key=TWITTER_APP_KEY, 
      app_secret=TWITTER_APP_KEY_SECRET, 
      oauth_token=TWITTER_ACCESS_TOKEN, 
      oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET) 

search = t.search(q='#Accounting', 
        geocode='-74,40,-73,41', 
        since_id='1', 
        max_id='504082008759488512' 
       ) 

tweets = search['statuses'] 
count=0 
for tweet in tweets: 
    count+=1 
    print tweet['id_str'], '\n', tweet['text'], '\n\n\n' 

print count 

這裏是我的流API代碼:

from twython import TwythonStreamer 
APP_KEY = 'XXXX' 
APP_SECRET = 'XXXX' 
OAUTH_TOKEN = 'XXXX' 
OAUTH_TOKEN_SECRET = 'XXXX' 

class MyStreamer(TwythonStreamer): 
    tweets=[] 
    def on_success(self, data): 
    if 'text' in data: 
     tweet= data['text'].encode('utf-8') 
     if 'Accounting' in tweet: 
      tweets.append(tweet) 
      print tweet 

    def on_error(self, status_code, data): 
    print status_code 
    self.disconnect() 

stream = MyStreamer(APP_KEY, APP_SECRET, 
        OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

stream.statuses.filter(location=['-74,40,-73,41']) 

感謝

回答

7

您只能查詢100的時間,但你必須狀態:其ID的能力該查詢應該從(或大於或小於)

因此,您要做的是運行您的第一個100,然後查找最低的ID並運行另一個查詢,這次將該ID設置爲(小於1)作爲您的最大ID,這將返回下一個100,您將追加到前面的結果中

然後,您可以多次運行此循環,因爲您需要受Twitter限制。

如果您想獲取最新的推文,您應該使用t.setMaxId()或t.setSinceId()設置爲分別低於或高於當前的最低/最高ID。

相關問題