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

使用tweepy提取Twitter多特征数据时Stream初始化报错调试求助

报错原因分析

你使用的是Tweepy 4.0及以上版本,该版本对流式API做了破坏性重构:

  1. Stream类的初始化方法不再接收auth对象和Listener实例作为参数,要求直接传入consumer_key、consumer_secret、access_token、access_token_secret四个凭证参数
  2. 你的代码存在逻辑冗余:已经自定义MyListener类继承了Stream类,后续又重复实例化Stream类传入auth和MyListener实例,不符合版本要求的调用规范
解决方法

提供两种适配方案,修复后原有字段提取逻辑都可以正常运行,不需要调整特征提取部分的代码:

方案1:适配当前Tweepy v4.x版本(推荐)

  1. 替换错误的流式实例化代码,直接实例化你自定义的MyListener类,传入四个凭证参数即可:
    原错误代码:
twitter_stream = Stream(auth, MyListener())
twitter_stream.sample()

替换为:

twitter_stream = MyListener(consumer_key, consumer_secret, access_key, access_secret)
twitter_stream.sample()
  1. 修复其他细节问题:
  • 调整try_retweet、try_country函数前的多余缩进,和其他函数保持同级对齐,避免触发缩进错误
  • 建议修改try_get方法,取消encode('utf-8')操作,Python3下直接存储字符串即可,避免csv中出现b'xxx'格式的bytes内容
  • 你预设要提取的字段存在拼写错误,比如user_'location'、user_'time_zone',注意修正字段名避免取值错误

方案2:降级到Tweepy v3.x兼容旧写法

如果你不想调整现有代码结构,可以直接降级tweepy到3.10.0版本:

pip install tweepy==3.10.0

降级后修改MyListener的继承关系,不再继承Stream,改为继承StreamListener:

from tweepy import Stream, StreamListener

class MyListener(StreamListener):
    # 原有回调方法保持不变

之后你原来的实例化代码twitter_stream = Stream(auth, MyListener())即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:04