2013-06-28 209 views
5

我使用的是Tweepy搜索功能對Twitter和出於某種原因,搜索結果僅限於15.這是我的代碼Tweepy特(Twitter API)不返回所有搜索結果

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

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

print len(results) 

,只有15結果被返回。它與不同的結果頁面有什麼關係?

+0

它看起來像有是控制結果的數量計數參數,但有什麼辦法,只是顯示所有的結果? – user1893354

回答

17

問題是關於Twitter API而不是tweepy本身。

按照documentationcount參數定義:

鳴叫的次數,以每頁返回,直到最大的100 缺省值是15這是以前在該「RPP」參數舊的 搜索API。

僅供參考,您可以使用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 

注:我沒有嘗試使用一個for循環,但Twitter的API有時會返回少於100個結果(儘管被要求100,而100可用)。我不確定這是爲什麼,但這就是爲什麼如果tweet_batch爲空時我沒有包含檢查以打破循環的原因 - 您可能希望自己添加這樣的檢查,因爲有query rate limit

另注:您可避免通過調用wait_on_rate_limit=True像命中率限制,以便

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