8

我在 Twitter 上使用 Tweepy 的搜索功能,由于某种原因,搜索结果限制为 15 个。这是我的代码

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

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

print len(results)

只返回 15 个结果。它与不同的结果页面有关吗?

4

2 回答 2

24

问题更多是关于 Twitter API 而不是 tweepy 本身。

根据文档count参数定义:

每页返回的推文数,最多 100 条。默认为 15。这以前是旧搜索 API 中的“rpp”参数。

仅供参考,您可以使用它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 。

希望有帮助。

于 2013-07-01T18:47:16.670 回答
4

这是一个最小的工作示例(一旦您将假密钥替换为真实密钥)。

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)
于 2017-01-29T10:14:12.613 回答