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

如何通过Python的Twython库高效获取某条Twitter推文的所有回复?

更精准获取指定推文所有回复的方案

嘿,我刚好研究过这个问题!你现在用to:screen_name搜索的方法确实容易混入大量无关内容——毕竟发给该用户的推文不一定都是针对这条特定推文的回复。好在现在X(原Twitter)API已经提供了精准锁定对话链的方式,比2014年的方案靠谱太多。

核心思路:利用conversation_id精准定位对话链

每条推文都有一个conversation_id,而原推文的id就是整个对话的根ID——所有针对这条推文的回复(包括回复的回复),它们的conversation_id都会和原推文的id完全一致。通过这个参数搜索,就能100%只拿到属于这条推文的所有互动内容。

具体实现步骤(Twython版)

1. 先获取原推文的conversation_id

其实原推文的id就是它的conversation_id,不过保险起见,我们可以通过API直接获取:

from twython import Twython

# 替换成你的API密钥
API_KEY = "你的API_KEY"
API_SECRET = "你的API_SECRET"
ACCESS_TOKEN = "你的ACCESS_TOKEN"
ACCESS_TOKEN_SECRET = "你的ACCESS_TOKEN_SECRET"

twitter = Twython(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

# 替换成目标推文的ID
target_tweet_id = "1234567890123456789"
original_tweet = twitter.show_status(id=target_tweet_id)
conversation_id = original_tweet["id_str"]  # 用id_str避免大整数溢出问题

2. 搜索该对话链下的所有回复

用search_recent_tweets接口(如果有学术权限,也可以用search_all_tweets获取历史回复),直接指定conversation_id作为查询条件:

# 初始化结果列表
all_replies = []
next_token = None

while True:
    # 构造查询参数
    search_params = {
        "query": f"conversation_id:{conversation_id}",
        "max_results": 100,  # 每次请求最多返回100条
        "tweet.fields": "author_id,created_at,in_reply_to_user_id"  # 按需添加需要的字段
    }
    if next_token:
        search_params["next_token"] = next_token
    
    # 调用API
    response = twitter.search_recent_tweets(**search_params)
    # 过滤掉原推文本身,只保留回复
    replies = [tweet for tweet in response.get("data", []) if tweet["id_str"] != conversation_id]
    all_replies.extend(replies)
    
    # 检查是否有下一页
    next_token = response.get("meta", {}).get("next_token")
    if not next_token:
        break

# 输出结果
for idx, reply in enumerate(all_replies, 1):
    print(f"回复{idx}: {reply['text']}")
    print(f"作者ID: {reply['author_id']} | 发布时间: {reply['created_at']}\n")

对比旧方案的优势

  • 精准度拉满:不会混入任何发给该用户但不属于这条推文的内容
  • 覆盖完整对话链:能获取所有层级的回复(包括回复的回复)
  • 符合X API最新规范:这是官方推荐的对话查询方式,比旧的搜索语法更稳定

注意事项

  • 权限要求:search_recent_tweets需要Standard级别的API访问权限;search_all_tweets需要学术研究权限
  • 分页处理:如果回复数量超过100条,必须通过next_token分页获取全部结果
  • 字段自定义:可以通过tweet.fields参数添加你需要的额外字段(比如用户信息、媒体附件等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:20:15