You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:05:33