使用Tweepy的Stream功能时提示tweepy.streaming无StreamListener属性错误
报错解决方法
根本原因
你使用的是Tweepy 4.0及以上版本,该版本重构了流式API逻辑,直接移除了旧版的tweepy.streaming.StreamListener类,因此调用时会触发属性不存在的报错。
两种解决方案
方案1:适配新版Tweepy写法(推荐)
不需要单独定义Listener类,直接继承tweepy.Stream实现对应方法即可,修改后的代码如下:
import tweepy # 此处保留你原来的API认证逻辑,确保已拿到有效auth凭证 class MyStream(tweepy.Stream): def on_status(self, status): webhook.send(status.text) # SMS.send(status.text) print(status.text) def on_error(self, status_code): if status_code == 420: # 返回False即可断开流连接 return False # 实例化自定义流对象,传入对应的认证参数 myStream = MyStream( consumer_key = "你的consumer_key", consumer_secret = "你的consumer_secret", access_token = "你的access_token", access_token_secret = "你的access_token_secret" ) # 启动流过滤,参数逻辑和旧版完全一致 myStream.filter(follow=["需要监控的twitter id"], is_async=True)
方案2:降级Tweepy到旧版本
如果不想调整现有代码逻辑,可以直接将Tweepy降级到最后一个支持StreamListener的3.10.0版本,执行以下安装命令即可:
pip install tweepy==3.10.0
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

