为何tweepy的api.search_tweets的count参数仅最多返回100条推文?
问题原因
api.search_tweets()对应的X(原Twitter)标准搜索API的单请求count参数上限为100,你设置超过100的数值都会被接口自动截断为100,这是每次只能拿到100条的核心原因- 网传的18000条上限是该接口的15分钟速率限制值:普通开发者权限下,15分钟内最多可以发起180次
search_tweets请求,单次最多返回100条,累计可获取18000条,并非单请求就能拿到的数量
解决方案
使用分页拉取的方式,多次请求拼接结果,直到拿到目标数量的推文即可。Tweepy已经封装了分页工具Paginator,无需手动处理分页参数,修改后的代码示例如下:
import tweepy # 此处省略你的API密钥认证逻辑,初始化API时建议加wait_on_rate_limit参数,触发速率限制时自动等待 # auth = tweepy.OAuth1UserHandler(consumer_key, consumer_secret, access_token, access_token_secret) # api = tweepy.API(auth, wait_on_rate_limit=True) search_term = "bitcoin -filter:retweets" tweets = [] # 分页拉取,每页100条,总共拉取10000条 for page in tweepy.Paginator(api.search_tweets, q=search_term, lang="en", count=100).limit(10000): tweets.extend(page) print(f"Number of tweets found: {len(tweets)}") # 遍历逻辑和原代码一致 for tweet in tweets: print(f"{tweet.user.name} tweeted: ") print(tweet.text) print(f"# of likes: {tweet.favorite_count}") print(f'# of retweets: {tweet.retweet_count}') print("-------------------------------------------------------------------------------")
注意事项
- 标准搜索API仅支持拉取最近7天内的推文,如果7天内符合筛选条件的推文不足10000条,最终获取的数量会低于预期
- 如果需要拉取更早时间的推文,需要申请学术研究权限或者使用付费的X API接口
内容的提问来源于stack exchange,提问作者Jaden Leonard
相关产品推荐
相关产品推荐

