使用Tweepy调用Twitter API提取数据触发TypeError错误如何解决
报错原因
这个报错是由于你使用的是Tweepy v4及以上版本,该版本对流API的调用逻辑做了不兼容更新:tweepy.Stream的初始化方法不再支持auth、listener这两个参数,你当前的代码混用了v3版本的旧写法,才会触发参数不匹配的错误。
修复步骤
- 删掉冗余的
tweepy.Stream实例化代码,你自定义的MyStreamListener已经继承了tweepy.Stream,直接用它的实例调用过滤方法即可 - 不需要额外传入auth参数,初始化自定义流类时传入的四个凭证已经完成了鉴权逻辑
修复后的完整代码
import tweepy import sys import os from dotenv import load_dotenv import csv import re import owslib from twitter_app_credentials import * auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) class MyStreamListener(tweepy.Stream): def on_status(self, status): print(status.text) def on_error(self, status_code): print(status_code) if not api: print("Authentication failed") sys.exit(-1) # 直接用自定义流类的实例调用过滤方法,不需要重复实例化tweepy.Stream myStream = MyStreamListener(consumer_key, consumer_secret, access_token, access_token_secret) myStream.filter(track=['news'])
补充说明
如果需要兼容旧版本的Tweepy写法,可以卸载当前版本重装v3最后一个稳定版:pip install tweepy==3.10.0
内容的提问来源于stack exchange,提问作者Gabriele Sarra
相关产品推荐
相关产品推荐

