使用Python Tweepy获取指定用户10条推文时的异常问题求助
分析Tweepy获取推文时的异常问题
嘿,我来帮你拆解下遇到的这几个问题,这些情况在使用Twitter API时挺常见的,咱们一个个说:
1. 用自己用户名时返回所有推文而非指定的10条
这大概率是你调用API方法时没设置数量限制参数,或者用了默认返回全量的逻辑。比如在Tweepy的v1.1版本里,user_timeline方法默认最多返回200条推文(还能通过分页获取更多),如果没显式传count=10,它就会返回能拿到的所有你的推文。另外如果你的代码里写了循环分页获取的逻辑,那自然会拉取所有内容。
2. 用其他存在的用户名时出现404错误(code:34)
这个错误码对应的是“资源不存在”,常见原因有这几个:
- 用户名拼写错误:哪怕多一个空格、大小写不对(虽然Twitter用户名不区分大小写,但输入时的特殊字符可能出错),都会导致找不到用户;
- 目标用户是私有账号:如果你的API认证方式是OAuth 2.0的Bearer Token,它只能访问公开推文,私有账号会直接返回404;
- API权限不足:如果是v1.1 API,你的开发者账号可能没有申请到读取用户推文的权限;如果是v2 API,没添加
read:tweets这类必要的权限; - 用户已改名/注销:你以为存在的用户名可能已经被用户修改或者账号被注销了。
3. 偶尔用其他用户名却返回自己的推文
这绝对是参数传递错误导致的!比如调用user_timeline时忘记传screen_name或user_id参数,API就会默认返回当前授权账号(也就是你自己)的推文。或者参数名写错了(比如把screen_name写成username),同样会触发默认行为。
给你几个解决方案
确保调用正确的API方法和参数
如果用的是Tweepy v1.1,正确获取指定用户10条推文的代码应该是这样:
import tweepy # 完成OAuth认证 auth = tweepy.OAuthHandler("你的consumer_key", "你的consumer_secret") auth.set_access_token("你的access_token", "你的access_token_secret") api = tweepy.API(auth) # 指定用户名和获取数量,tweet_mode="extended"能拿到完整推文内容 target_tweets = api.user_timeline(screen_name="目标用户名", count=10, tweet_mode="extended") for tweet in target_tweets: print(tweet.full_text)
如果是用Twitter API v2(现在更推荐的版本),代码要换成这样:
import tweepy # 用Bearer Token初始化客户端 client = tweepy.Client(bearer_token="你的bearer_token") # 先通过用户名获取用户ID(v2 API需要用ID来定位用户) user_info = client.get_user(username="目标用户名") if user_info.data: user_id = user_info.data.id # 获取10条推文,max_results控制数量 tweets = client.get_users_tweets(user_id, max_results=10) if tweets.data: for tweet in tweets.data: print(tweet.text)
排查权限和认证问题
- 如果要访问私有账号的推文,必须用OAuth 1.0a认证(需要用户授权你的应用),而不是Bearer Token;
- 去Twitter开发者后台检查你的项目权限,确保添加了读取推文的相关权限;
- 确认用户名绝对正确,可以去Twitter官网搜索该用户,复制准确的用户名(不要带@符号)。
内容的提问来源于stack exchange,提问作者user9016934
相关产品推荐
相关产品推荐

