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

使用Python Tweepy获取Twitter用户时间线时遇403错误求助

解决Twitter API v2 403 Forbidden错误及提取用户2年时间线方案

一、403错误的核心解决步骤

  • 确保你的开发者账号已创建关联项目的应用:Twitter API v2要求所有请求必须绑定到具体项目,未关联项目的旧版独立应用无法使用v2端点。登录开发者门户,检查应用是否归属某个项目,无项目则新建并关联应用。
  • 正确使用认证凭据:
    • 若使用Bearer Token,必须是从关联项目的应用中生成的Token,而非旧版v1.1的Token。
    • 若使用OAuth 1.0a(consumer_key等),需确认这些密钥来自关联项目的应用,而非未绑定项目的旧应用。
    • 注意:Tweepy的Client初始化时,Bearer Token优先级高于OAuth密钥,若用OAuth方式,可只传入consumer_key、consumer_secret、access_token、access_token_secret,避免同时传Bearer Token引发冲突。

二、修改代码以提取过去2年的时间线

原代码缺少时间范围过滤,结合认证修正后的代码如下:

import tweepy
from datetime import datetime, timedelta

# 替换为你关联项目的应用密钥/令牌
client = tweepy.Client(
    bearer_token='你的项目关联应用Bearer Token',
    # 或选择OAuth 1.0a认证(二选一即可)
    # consumer_key='你的consumer_key',
    # consumer_secret='你的consumer_secret',
    # access_token='你的access_token',
    # access_token_secret='你的access_token_secret'
)

# 获取目标用户ID
user = client.get_user(username='nytimes')
if not user.data:
    print("无法获取用户信息")
    exit()

# 计算2年前的日期(符合Twitter API要求的ISO 8601格式)
two_years_ago = (datetime.now() - timedelta(days=365*2)).isoformat() + "Z"

# 分页获取过去2年的推文,添加时间范围过滤
paginator = tweepy.Paginator(
    client.get_users_tweets,
    id=user.data.id,
    max_results=100,  # v2单次请求最大结果数为100
    start_time=two_years_ago,
    tweet_fields=['created_at']  # 可选,获取推文创建时间用于验证
)

# 遍历所有符合条件的推文
for tweet in paginator.flatten():
    print(f"推文ID: {tweet.id}, 创建时间: {tweet.created_at}, 内容: {tweet.text}")

三、额外注意事项

  • API权限:确保应用拥有Read/Write或Read and Write权限(免费项目的基础权限即可满足读取需求),权限不足需在开发者门户申请调整。
  • 速率限制:免费层级每15分钟最多获取900条推文,Tweepy会自动处理速率限制等待,但大数量提取需耐心等待。
  • 推文数量上限:免费层级最多可获取用户最近3200条推文,若目标用户2年内推文超过3200条,无法获取全部,需升级到付费层级。

内容的提问来源于stack exchange,提问作者Rauer Figueiredo Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:16