2016-01-16 54 views

回答

2

每Twitter的docs,所述q參數是有限的。

UTF-8,URL編碼的搜索查詢,最多500個字符,包括運算符。查詢可能會受到複雜性的限制。

如果要構建複雜的搜索詞邏輯,可以使用Streamer和Listener。你基本上在做你自己的過濾。這是一個Listener的簡單例子。我試圖給出一些從on_status方法返回的流行對象,返回爲json

import json 

class SListener(StreamListener): 

    def __init__(self, api = None, fprefix = 'streamer'): 
     self.api = api or API() 
     self.counter = 0 
     self.fprefix = fprefix 

    def on_data(self, data): 
     elif 'limit' in data: 
      if self.on_limit(json.loads(data)['limit']['track']) is False: 
       return False 
     elif 'warning' in data: 
      warning = json.loads(data)['warnings'] 
      print warning['message'] 
      return false 

    def on_status(self, status): 

     status_obj = json.loads(status) 

     username = status_obj["user"]["screen_name"] 
     userID = status_obj["user"]["id"] 
     user_loc = status_obj["user"]["location"] 
     tweet_date_time = status_obj["created_at"] 
     tweetID = status_obj["id"] 

     tweet = status_obj["text"].encode('utf-8') 
     searchTerms = ['1','2','3'] # to say ... '99' or '100' 

     if any(query in tweet for query in searchTerms): 
      print(tweet) #or do something with it