2013-06-28 6 views
5

मैं ट्विटर के लिए Tweepy साथ खोज सुविधा का उपयोग कर रहा है और किसी कारण खोज परिणामों 15. यहाँ तक ही सीमित हैं के लिएTweepy (ट्विटर एपीआई) रिटर्निंग नहीं सभी खोज परिणाम

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

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

print len(results) 

और केवल 15 मेरी कोड है परिणाम लौटाए जाते हैं। क्या इसके परिणाम या कुछ अलग-अलग पृष्ठों के साथ कुछ करना है?

+0

ऐसा लगता है कि एक गणना पैरामीटर है कि परिणामों की संख्या को नियंत्रित करता है की तरह है, लेकिन वहाँ एक रास्ता बस के सभी दिखाने के लिए है परिणाम? – user1893354

उत्तर

17

प्रश्न ट्विटर के बजाय ट्विटर एपीआई के बारे में अधिक है।

documentation के अनुसार, count पैरामीटर परिभाषित करता है:

ट्वीट्स की संख्या 15. यह पूर्व में "आरपीपी" पैरामीटर था 100 चूक की एक अधिकतम करने के प्रति पृष्ठ पर लौटने के लिए, पुराना खोज एपीआई।

FYI करें, आप इस तरह पृष्ठवार परिणाम पाने के लिए, tweepy.Cursor उपयोग कर सकते हैं:

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 

यह भी देखें: https://github.com/tweepy/tweepy/issues/197

आशा है कि मदद करता है।

2

यहां एक न्यूनतम कामकाजी उदाहरण है (एक बार जब आप नकली कुंजी को वास्तविक लोगों के साथ प्रतिस्थापित करते हैं)।

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 

नोट: मैं पाश के लिए एक का उपयोग कर प्रयास किया, लेकिन चहचहाना एपीआई कभी कभी 100 से कम परिणाम देता है (100 के लिए कहा जा रहा है के बावजूद, और 100 से उपलब्ध है)। मुझे यकीन नहीं है कि यह क्यों है, लेकिन यही कारण है कि मैंने tweet_batch खाली होने पर लूप को तोड़ने के लिए चेक शामिल नहीं किया था - आप query rate limit के रूप में स्वयं को ऐसा चेक जोड़ना चाहेंगे।

एक और ध्यान दें: आप की तरह wait_on_rate_limit=True लागू द्वारा दर सीमा से टकराने से बचने कर सकते हैं ताकि

 api = tweepy.API(get_authorization(), wait_on_rate_limit=True) 
संबंधित मुद्दे