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

如何使用Tweepy获取Twitter账号最近30条推文的平均互动量

问题修复方案

现有代码的核心问题

  • 第一部分拉取推文的代码存在语法错误:user_timeline方法的screen_name参数被误写为元组格式(多了外层括号和逗号),且方法本身括号未闭合,导致参数传递异常,拉取的推文数据不符合预期,自然无法获取正确的转发量。
  • 平均值计算逻辑错误:原代码将单条推文的转发、点赞数单独存入列表后除以总元素数(30条推文对应60个元素),不符合「每条推文点赞+转发+评论之和的平均值」的计算规则。
  • 评论数获取方案效率低、准确率差:Twitter v1.1 API的search接口仅支持查询最近7天的公开内容,超过时限的推文回复无法被检索到,且遍历搜索的方式漏检率极高,不适用于批量统计30条推文的回复数。

最优解决方案

推荐使用Twitter API v2配合Tweepy v4及以上版本实现需求,v2接口的public_metrics字段会直接返回每条推文的点赞数、转发数、评论数、引用数,无需自行检索回复,数据准确、调用效率高。

完整实现代码

import tweepy

# 填入你在Twitter开发者平台申请的V2 API Bearer Token
BEARER_TOKEN = "你的Bearer Token"
# 要查询的目标用户名
TARGET_USERNAME = "test_name"
# 要拉取的最近推文数量
TWEET_COUNT = 30

# 初始化V2客户端
client = tweepy.Client(bearer_token=BEARER_TOKEN)

# 先根据用户名获取用户ID
user = client.get_user(username=TARGET_USERNAME)
user_id = user.data.id

# 拉取用户最近30条推文,指定返回public_metrics字段
# exclude参数可根据需求调整:如果不需要统计转推、回复的互动,就加上exclude=['retweets', 'replies']
tweets = client.get_users_tweets(
    id=user_id,
    max_results=TWEET_COUNT,
    tweet_fields=['public_metrics']
)

total_interaction = 0
for tweet in tweets.data:
    metrics = tweet.public_metrics
    # 单条推文互动量 = 点赞数 + 转发数 + 评论数
    single_interaction = metrics['like_count'] + metrics['retweet_count'] + metrics['reply_count']
    total_interaction += single_interaction

# 计算平均互动量
average_interaction = total_interaction / TWEET_COUNT
print(f"最近{TWEET_COUNT}条推文的平均互动量为:{average_interaction:.2f}")

原代码的局部修复(仍使用v1 API的情况)

如果你坚持使用v1版本API,可以按以下方式修改原有代码,但仍无法解决评论数只能查7天的问题:

import tweepy

# 原有auth逻辑保持不变
auth = tweepy.OAuthHandler("你的API Key", "你的API Secret")
auth.set_access_token("你的Access Token", "你的Access Token Secret")
tweepy_api = tweepy.API(auth, wait_on_rate_limit=True)

# 修复screen_name参数的语法错误,去掉多余的括号和逗号
my_tweets = tweepy_api.user_timeline(
    screen_name='test_name',
    count=30,
    include_rts=True,
    tweet_mode='extended'
)

total_interaction = 0
for el in my_tweets:
    # 单独获取单条推文的转发、点赞数
    retweet = el.retweet_count
    favorite = el.favorite_count
    # 原有获取评论的逻辑适配新版Tweepy方法名,注意仅支持7天内的推文
    name = el.user.screen_name
    tweet_id = el.id_str
    replies = []
    for tweet in tweepy.Cursor(tweepy_api.search_tweets, q='to:'+name, result_type='recent', timeout=999999).items(1000):
        if hasattr(tweet, 'in_reply_to_status_id_str') and tweet.in_reply_to_status_id_str == tweet_id:
            replies.append(tweet)
    reply_count = len(replies)
    total_interaction += (retweet + favorite + reply_count)

average = total_interaction / len(my_tweets)
print(f"平均互动量为:{average:.2f}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:21:00