2013-06-28 22 views
5

Ben Twitter için Tweepy ile arama özelliğini kullanarak ve arama sonuçları İşte 15. sınırlıdır nedenseTweepy (Twitter API) tüm ara dönersek Değil

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

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

print len(results) 

ve sadece 15 benim kodudur ediyorum Sonuçlar sonuçlar geri döndü. Farklı sonuç sayfalarıyla veya başka bir şeyle ilgisi var mı?

+0

sonuç sayısını kontrol eden bir sayım parametresi var gibi görünüyor, ama sadece tüm göstermek için bir yol yoktur sonuçlar? – user1893354

cevap

17

Soru, Twitter API'sı yerine Twitter API'sı ile ilgili.

documentation göre, count parametre tanımlar:

tweet sayısı Bu eskiden de "CHP'nin" parametresi oldu 15'e 100. Varsayılanları arasında en fazla sayfa başına dönmek için eski Arama API'sı.

Bilginize, böyle, sayfalara ayrılmış sonuçlar elde etmek için tweepy.Cursor kullanabilirsiniz:

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 

Ayrıca bakınız: https://github.com/tweepy/tweepy/issues/197.

Bu yardımcı olur umarım.

2

İşte en az çalışan bir örnek (sahte anahtarları gerçek olanlarla değiştirdiğinizde).

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 

Not: (mevcut olan 100 isteniyor rağmen ve 100) Olay mahalinin bir kullanmayı deneyin, ama twitter api bazen 100'den az sonuçları döndürür. Bunun neden böyle olduğundan emin değilim, ancak tweet_batch boşsa döngüyü kırmak için bir kontrol eklemediğim nedeni budur - query rate limit olduğu gibi böyle bir çek eklemeniz gerekebilir.

başka Not: gibi wait_on_rate_limit=True çağırarak oran sınırını çarpmamak böylece

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