2016-01-16 1 views
1

Я обнаружил, что могу включить только до 20+ поисковых терминов со следующим кодом, а затем он дает мне ошибку сказать, что слишком много поисковых запросов. Есть ли способ обойти это?Как увеличить количество поисковых запросов в Tweepy для доступа к API Twitter?

import tweepy 
searchTerms = '1' or '2' or '3' # to say ... '99' or '100' 
tweets = tweepy.Cursor(api.search, q=searchTerms, since=startSince, until=endUntil).items() 

ответ

2

За щебетать docs параметр q ограничен.

UTF-8, поисковый запрос URL-кодировки с 500 символами, включая операторы. Запросы могут быть дополнительно ограничены сложностью.

Если вы хотите построить сложную логику поискового запроса, вы можете использовать Streamer и прослушиватель. Вы по сути делаете свою собственную фильтрацию. Вот простой пример прослушивателя. Я попытался предоставить некоторые популярные объекты, возвращенные из метода 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