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

如何在Tweepy StreamingClient中获取用户名?(v4.10.1版本)

解决Tweepy StreamingClient无法获取用户名的问题

你的代码里有几个问题导致拿不到用户名,修正方案如下:

问题分析

  1. 拼写错误:代码里的tweet.inlcudes少了字母c,正确写法是tweet.includes
  2. 方法用错:on_tweet方法只接收单条Tweet对象,没法直接获取扩展的用户数据,得用on_response方法处理完整响应
  3. 属性不存在:Tweet对象本身没有user属性,用户信息存在响应的includes字段里,需要通过推文的author_id去匹配

修正后的代码

from tweepy import StreamingClient, StreamRule

class TweetStreamerV2(StreamingClient):
    def on_response(self, response):
        # 获取推文主体
        tweet = response.data
        if not tweet:
            return
        
        # 从includes里取出用户列表
        users = response.includes.get('users', [])
        # 用author_id匹配对应的用户
        target_user = next((user for user in users if user.id == tweet.author_id), None)
        
        if target_user:
            print(f"用户名: {target_user.username}")
            print(f"推文内容: {tweet.text}")
            print(f"创建时间: {tweet.created_at}")
        else:
            print("未找到该推文的用户信息")

streamer = TweetStreamerV2(bearer_token)

# 注意:如果之前加过相同规则,先删除避免重复接收
# streamer.delete_rules(ids=[已存在的规则ID])
rule = StreamRule(value="xxx")
streamer.add_rules(rule)

# 启动流,保留你原来指定的扩展字段
streamer.filter(expansions="author_id", tweet_fields="created_at", user_fields="username")

补充说明

  • on_response能拿到完整的API响应,其中response.data是推文内容,response.includes包含你请求扩展的用户数据
  • 用next()函数快速匹配用户,避免遍历整个列表
  • 如果重复添加相同规则,会导致重复推流,建议定期清理旧规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:39:20