Хранение потоковых твитов в списке для дальнейшего анализа
Я создаю приложение для интеллектуального анализа данных, которое собирает твиты с использованием потокового API Twitter (через 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 ответ
Вы можете использовать функцию 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)