使用Twitter API获取特朗普账号推文无法达到3200条上限问题
解决无法获取realdonaldtrump全量推文的问题
首先得明确:这个问题的核心不是你的代码有bug,而是目标账号的特殊状态导致了API访问限制。不过我们可以先优化代码,确保在API允许的范围内拿到最多内容,再解释限制的根源。
一、代码优化建议
你的现有代码没有充分利用API的单次请求上限,也没处理限流和推文截断的问题,调整后可以在规则内最大化获取量:
import tweepy import json access_token = "xxx" access_token_secret = "xxx" consumer_key = "xxx" consumer_secret = "xxx" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # 添加自动限流等待,避免因请求频繁被API拦截 api = tweepy.API(auth, wait_on_rate_limit=True) screen_name = "realdonaldtrump" data = [] # 配置参数:单次请求取满200条(API上限),包含转发,获取完整长推文 for tweets in tweepy.Cursor(api.user_timeline, screen_name=screen_name, count=200, include_rts=True, tweet_mode="extended").pages(): for tweet in tweets: # 扩展模式下用full_text获取完整推文内容 print(tweet.full_text) data.append(tweet._json) filename = f"{screen_name}_tweets.json" with open(filename, "w") as outfile: json.dump(data, outfile, indent=4)
优化点说明:
wait_on_rate_limit=True:自动处理API限流阈值,不用手动写等待逻辑count=200:拉满单次请求的推文数量(Twitter API的user_timeline接口单次最多返回200条)include_rts=True:包含账号转发的内容(默认不包含,会直接减少返回量)tweet_mode="extended":获取完整的长推文文本,避免被截断成短内容
二、为什么realdonaldtrump只能拿到100-200条推文?
因为realdonaldtrump账号处于永久暂停状态,Twitter对这类受限账号的历史推文做了API访问限制——即使你的API密钥权限完全正常,也只能获取少量最近的推文,这是平台的政策限制,和代码无关。你测试其他正常活跃账号能拿到3200条,也侧面验证了这一点。
如果需要该账号的更多历史推文,只能通过第三方归档服务获取(注意遵守版权和平台规则),官方API无法提供超出限制的内容。
内容的提问来源于stack exchange,提问作者Juliette
相关产品推荐
相关产品推荐

