将流式推文存储在列表中以进行进一步的分析

时间:2018-12-10 15:20:16

标签: twitter tweepy twitter-streaming-api

我正在构建一个数据挖掘应用程序,以使用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条推文收集到一个列表中获得见识,我将不胜感激。

1 个答案:

答案 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)