关于可获取更多推文的Twitter API咨询:Tweepy调用api.search接口存在数量限制问题
解决Twitter API获取推文数量受限的问题
嘿,这个情况我之前开发时也遇到过!其实不是Tweepy的上限,而是你用的Twitter API v1.1标准搜索端点本身就有单请求最多100条推文的限制,哪怕你把count设成1000,API也只会返回它允许的最大数量。
下面给你几个能获取更多推文的方案:
1. 切换到Twitter API v2(推荐)
Twitter API v2的搜索能力比v1.1强很多,而且Tweepy完全支持调用v2接口:
- 近期推文搜索:用
/2/tweets/search/recent端点,单请求最多返回100条,但可以通过分页(pagination)批量获取最多7天内的推文,普通开发者账号的速率限制是每15分钟450次请求,算下来15分钟最多能拿45000条。
示例代码(Tweepy v2):import tweepy client = tweepy.Client(bearer_token="你的Bearer Token") # 第一次请求 response = client.search_recent_tweets(query="sunny", max_results=100) tweets = response.data # 处理分页 next_token = response.meta.get('next_token') while next_token: response = client.search_recent_tweets(query="sunny", max_results=100, next_token=next_token) tweets.extend(response.data) next_token = response.meta.get('next_token') # 可以加个判断,比如拿到1000条就停止 if len(tweets) >= 1000: break - 全历史推文搜索:如果需要获取超过7天的历史推文,得用
/2/tweets/search/all端点,但这个需要申请学术研究访问权限,拿到权限后可以检索Twitter的全量历史推文。
2. 在v1.1中使用分页获取更多
如果你暂时不想切换到v2,也可以用Tweepy的Cursor来自动处理v1.1搜索的分页,绕过单请求100条的限制:
import tweepy auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret") api = tweepy.API(auth) # 用Cursor获取最多1000条推文,自动处理分页 tweets = [] for tweet in tweepy.Cursor(api.search, q='sunny', count=100).items(1000): tweets.append(tweet)
不过要注意,v1.1的标准搜索只能返回最近7天的推文,而且速率限制比v2更严格(每15分钟180次请求)。
3. 实时流API(适合持续收集)
如果你的需求是实时获取“sunny”相关的推文,而不是回溯历史,可以用Twitter的流API:
- v1.1的
statuses/filter端点,或者v2的/2/tweets/search/stream端点,都可以持续接收符合条件的推文,只要你的程序保持运行,就能不断获取新发布的内容,没有单次请求的数量限制(但要遵守速率限制)。
最后提醒一下,不管用哪个API,都要注意Twitter的速率限制规则,避免因为请求过于频繁被限流甚至封号哦~
内容的提问来源于stack exchange,提问作者palapara
相关产品推荐
相关产品推荐

