我使用的是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結果被返回。它與不同的結果頁面有什麼關係?
我使用的是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結果被返回。它與不同的結果頁面有什麼關係?
問題是關於Twitter API而不是tweepy本身。
按照documentation,count
參數定義:
鳴叫的次數,以每頁返回,直到最大的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。
希望有所幫助。
這是一個最小的工作示例(一旦您用真實鑰匙替換假鑰匙)。
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)
它看起來像有是控制結果的數量計數參數,但有什麼辦法,只是顯示所有的結果? – user1893354