我正在构建一个数据挖掘应用程序,以使用Twitter流API(通过tweepy)收集推文,并在其上运行一套NLP算法。到目前为止,我所能做的就是将这些推文写入一个外部文件中。由于我要收集的推文数量一次为100(相当小),并且出于部署方面的考虑,我希望将这些推文收集到字典或列表中以进行进一步分析。但是,我没有这样做。我到目前为止的代码如下:
import tweepy
class MyStreamListener(tweepy.StreamListener):
def __init__(self, api=None):
super(MyStreamListener, self).__init__()
self.num_tweets = 0
self.tweets = []
def on_status(self, status):
#print(status.text)
self.num_tweets += 1
self.tweets.append(status.text)
if self.num_tweets > 100:
return False
def getstreams(keyword):
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth,listener=myStreamListener)
tweet_list = myStream.filter(track=[keyword])
return tweet_list.tweets
getstreams('Starbucks')
但是,当我运行它时,我得到的只是:
AttributeError: 'NoneType' object has no attribute 'tweets'
指向该行:
return tweet_list.tweets
如果有人能回答如何解决此问题并就如何将n条推文收集到一个列表中获得见识,我将不胜感激。
答案 0 :(得分:1)
您可以在类中使用on_data函数。
def on_data(self, data):
# Converting data , which is an object, into JSON
tweet = json.loads(data)
# my_tweet is our list declared globally
my_tweet.append(tweet)