我收到的错误是:
AttributeError: 'OAuthHandler' object has no attribute 'on_exception'
,当我尝试为Twitter流API编译我的Python代码时。但我甚至没有使用on_exception
方法,所以我不确定它是什么意思。
from tweepy import Stream
from tweepy.auth import OAuthHandler
#import StreamListener from tweepy.streaming
from tweepy.streaming import StreamListener
#import the API() method for the intitilization method ___init__
from tweepy.api import API
import time
import simplejson
import tweepy
#define the OAuth variables
consumerKey = "XX"
consumerSecret = "XX"
accessTokenKey = "XX"
accessTokenSecret = "XX"
#now we need to log into the Twitter API using my credentials. This is practically aunthenticating my access to my Twitter API
key = tweepy.OAuthHandler(consumerKey, consumerSecret)
key.set_access_token(accessTokenKey, accessTokenSecret)
#to confirm thats its me I can ask for my application name and print it out
api = tweepy.API(key)
print api.me().name
#the StreamListener class literally listens for the tweets that We are looking for depending on what we set the track parameter to be
#create a new class for StreamListener() so as to modify this StreamListener class to be able to store the tweets we'll be streaming in as well as to stop reading tweets.
#the StreamListener class is from the tweepy module so invoke it using tweepy
#Listener() takes StreamListener() as its argument and thereby inherits everything that is in StreamListener()
class Listener(tweepy.StreamListener):
#the initialization function __init__() initializes an instance of a class
#The second is the on_status() function. In Twitter, a tweet is known technically as a status update. on_status() tells StreamListener() what to do when it receives a new status update.
def __init__(self, api=None):
self.api = api or API()
#create a counter that increments itself by one every time that StreamListener() finds a relevant tweet,
self.n = 0 #this is the counter which is initially 0
self.m = 20 #in this example, we want 20 to be the max number of tweets at first so we can analyze them
def on_status(self, status):
print status.text.encode('utf8')
self.n = self.n + 1 #after incrememnting the counter, we want to checkk if we have reached the maximum yet hence we use the if statement
#If it is, on_status() returns True, which tells Listener() to keep listening for more tweets. Otherwise, on_status() returns False, which tells Listener() to stop listening and ultimately turn tweepy off.
if self.n < self.m:
return True
else:
return False
#now to call the StreamListener class
#assign the output of Listener() to a variable, using your login credentials loaded above into key and the Listener()
stream = tweepy.streaming.Stream(Listener, key)
#define the stream by giving a parameter to listen for: a keyword – a list of strings assigned to track , in this case 1,
stream.filter(track=['de'])
#if we wanted to listen for a specific language, we'd also list that parameter as languages=['en'] for English
我从终端得到的错误说:
回溯(最近一次呼叫最后一次):文件&#34; twitterAPI.py&#34;,第63行, stream.filter(track = [&#39; de&#39;])File&#34; /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tweepy/streaming.py& #34 ;, 第430行,在过滤器中 self._start(async)File&#34; /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tweepy/streaming.py", 第346行,在_start中 self._run()File&#34; /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tweepy/streaming.py", 第285行,在_run self.listener.on_exception(exception)AttributeError:&#39; OAuthHandler&#39;对象没有属性&#39; on_exception&#39;