2013-06-28 7 views
5

ich die Suchfunktion mit Tweepy für Twitter bin mit und aus irgendeinem Grund ist die Suchergebnisse sind begrenzt auf 15. Hier ist mein CodeTweepy (Twitter API) Nicht alle Such Ergebnisse zu

results=api.search(q="Football",rpp=1000) 

for result in results: 
    print "%s" %(clNormalizeString(result.text)) 

print len(results) 

und nur 15 Ergebnisse werden zurückgegeben. Hat es etwas mit verschiedenen Seiten von Ergebnissen oder etwas zu tun?

+0

Es sieht aus wie ein Zähl-Parameter, die die Anzahl der Ergebnisse kontrolliert, aber ist es eine Möglichkeit zu zeigen, nur alle die Ergebnisse? – user1893354

Antwort

17

Die Frage ist mehr über Twitter API statt Tweepy selbst.

Nach der documentation, count Parameter definiert:

Die Anzahl der tweets pro Seite zurückzukehren, bis zu einem Maximum von 100. Defaults bis 15. Dies war früher der "RPP" Parameter in der alt Such-API.

FYI, können Sie tweepy.Cursor verwenden paginierte Ergebnisse zu erhalten, wie folgt aus:

import tweepy 


auth = tweepy.OAuthHandler(..., ...) 
auth.set_access_token(..., ...) 

api = tweepy.API(auth) 
for tweet in tweepy.Cursor(api.search, 
          q="google", 
          count=100, 
          result_type="recent", 
          include_entities=True, 
          lang="en").items(): 
    print tweet.created_at, tweet.text 

Siehe auch: https://github.com/tweepy/tweepy/issues/197.

Hoffe, dass hilft.

2

Hier ist ein minimales Arbeitsbeispiel (sobald Sie die falschen Schlüssel durch echte ersetzen).

import tweepy 
from math import ceil 

def get_authorization(): 

    info = {"consumer_key": "A7055154EEFAKE31BD4E4F3B01F679", 
      "consumer_secret": "C8578274816FAEBEB3B5054447B6046F34B41F52", 
      "access_token": "15225728-3TtzidHIj6HCLBsaKX7fNpuEUGWHHmQJGeF", 
      "access_secret": "61E3D5BD2E1341FFD235DF58B9E2FC2C22BADAD0"} 

    auth = tweepy.OAuthHandler(info['consumer_key'], info['consumer_secret']) 
    auth.set_access_token(info['access_token'], info['access_secret']) 
    return auth 


def get_tweets(query, n): 
    _max_queries = 100 # arbitrarily chosen value 
    api = tweepy.API(get_authorization()) 

    tweets = tweet_batch = api.search(q=query, count=n) 
    ct = 1 
    while len(tweets) < n and ct < _max_queries: 
     print(len(tweets)) 
     tweet_batch = api.search(q=query, 
           count=n - len(tweets), 
           max_id=tweet_batch.max_id) 
     tweets.extend(tweet_batch) 
     ct += 1 
    return tweets 

Anmerkung: Ich habe versucht eine for-Schleife, aber die twitter api manchmal gibt weniger als 100 Ergebnisse (trotz für 100 gefragt zu werden, und 100 verfügbar ist). Ich bin mir nicht sicher, warum das so ist, aber das ist der Grund, warum ich keinen Haken gesetzt habe, um die Schleife zu unterbrechen, wenn tweet_batch leer ist - Sie könnten eine solche Überprüfung selbst hinzufügen, wie es eine query rate limit gibt.

Noch ein Hinweis: Sie können das vermeiden, dass die Ratenbegrenzung Schlagen von wait_on_rate_limit=True wie Aufrufen so

 api = tweepy.API(get_authorization(), wait_on_rate_limit=True)