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

使用免费版Twitter API通过Tweepy获取用户推文遇权限问题

问题分析与解决方案

你遇到的453错误核心原因是:Twitter API免费访问级别已不再开放v1.1版本的user_timeline接口,该接口目前仅对基础版(付费)及以上权限开放。

不过你不需要升级权限,改用Twitter API v2的免费端点就能实现需求,Tweepy已经支持v2接口。以下是修改后的完整代码:

import tweepy
import pandas as pd

# Twitter API v2 凭证
API_KEY = 'x'
API_SECRET_KEY = 'x'
ACCESS_TOKEN = 'xx'
ACCESS_TOKEN_SECRET = 'xxxx'

# 初始化v2客户端
client = tweepy.Client(
    consumer_key=API_KEY,
    consumer_secret=API_SECRET_KEY,
    access_token=ACCESS_TOKEN,
    access_token_secret=ACCESS_TOKEN_SECRET
)

def get_tweets(username, count=200):
    # 先通过用户名获取用户ID(v2接口要求用ID查询)
    user = client.get_user(username=username)
    user_id = user.data.id

    # 获取用户推文,包含所需字段
    tweets = client.get_users_tweets(
        id=user_id,
        max_results=count,
        tweet_fields=['created_at', 'public_metrics'],
        expansions='author_id'
    )

    # 整理推文数据
    tweet_data = []
    for tweet in tweets.data:
        tweet_data.append({
            'tweet_id': tweet.id,
            'created_at': tweet.created_at,
            'text': tweet.text,
            'likes': tweet.public_metrics['like_count'],
            'retweets': tweet.public_metrics['retweet_count']
        })
    return tweet_data

def main():
    user = 'x'
    data = get_tweets(user, count=200)

    df = pd.DataFrame(data)
    df.to_excel('twitter_data.xlsx', index=False)

if __name__ == "__main__":
    main()

代码关键点说明:

  • 改用Tweepy的Client类初始化API v2客户端,替代原v1.1的API类
  • v2接口需要通过用户名先获取用户ID,再用ID查询推文
  • 推文的点赞、转发数统一放在public_metrics字段中,需对应提取
  • 免费版v2接口支持最多获取用户最近3200条推文,完全覆盖原需求的200条限制

内容的提问来源于stack exchange,提问作者Nripesh Niketan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:22:23