如何修复TweepError(code:34):请求页面不存在的问题?
修复Tweepy获取用户推文时的错误(Code 34)
运行以下Python代码尝试获取指定用户的所有推文:
def get_all_tweets(screen_name): #initialize a list to hold all the tweepy Tweets alltweets = [] #make initial request for most recent tweets (200 is the maximum allowed count) new_tweets = api.user_timeline(screen_name = screen_name,count=200) #save most recent tweets alltweets.extend(new_tweets) #save the id of the oldest tweet less one oldest = alltweets[-1].id - 1 while len(new_tweets) > 0: new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest) #save most recent tweets alltweets.extend(new_tweets) # print(alltweets[-1]['id']) #update the id of the oldest tweet less one oldest = alltweets[-1].id - 1
但触发了如下TweepError错误:
TweepError Traceback (most recent call last) <ipython-input-40-1517626bbfd9> in <module> 221 for x in usernames: 222 print(x) --> 223 user_info=get_all_tweets(x) 224 all_fet.append(compute_features(x,user_info)) 225 # 2 frames /usr/local/lib/python3.8/dist-packages/tweepy/binder.py in execute(self) 232 raise RateLimitError(error_msg, resp) 233 else: --> 234 raise TweepError(error_msg, resp, api_code=api_error_code) 235 236 # Parse the response payload TweepError: [{'code': 34, 'message': 'Sorry, that page does not exist.'}]
修复方案
验证用户名有效性:错误码34直接说明目标用户页面不存在,大概率是你传入的
screen_name有问题——可能是拼写错误、用户已注销、或者用户名包含特殊字符。先手动去Twitter搜索这个用户名,确认它确实存在且拼写完全一致。添加异常捕获机制:给代码加上try-except块,遇到无效用户时程序不会崩溃,还能记录错误信息继续处理其他用户。修改后的代码示例:
def get_all_tweets(screen_name): alltweets = [] try: # 初始请求最新推文 new_tweets = api.user_timeline(screen_name=screen_name, count=200) alltweets.extend(new_tweets) # 处理用户无推文的情况,避免索引越界 if not alltweets: return alltweets oldest = alltweets[-1].id - 1 while len(new_tweets) > 0: new_tweets = api.user_timeline(screen_name=screen_name, count=200, max_id=oldest) alltweets.extend(new_tweets) # 只有获取到新推文时才更新oldest,防止索引越界 if len(new_tweets) > 0: oldest = alltweets[-1].id - 1 return alltweets except TweepError as e: print(f"获取用户 {screen_name} 推文失败: {e}") return []
处理无推文用户:有些用户存在但没发过推文,原代码里
alltweets[-1]会触发索引越界错误,所以要先判断alltweets是否为空,再执行后续逻辑。确认API权限与版本:检查你的Tweepy版本和Twitter API密钥是否有效,确保拥有访问用户时间线的权限(注意Twitter API v1.1和v2的接口差异,如果用v2需要调整调用方式)。
内容的提问来源于stack exchange,提问作者aya zouaoui
相关产品推荐
相关产品推荐

