Как я могу использовать твиты из потокового потока api Twitter и хранить их в mongodb
Мне нужно разработать приложение, которое позволяет мне отслеживать твиты и сохранять их в mongodb для исследовательского проекта (как вы можете собрать, я нооб, поэтому, пожалуйста, несите меня). Я нашел этот фрагмент кода, который отправляет твиты, проходящие через мое окно терминала:
import sys
import tweepy
consumer_key=""
consumer_secret=""
access_key = ""
access_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
class CustomStreamListener(tweepy.StreamListener):
def on_status(self, status):
print status.text
def on_error(self, status_code):
print >> sys.stderr, 'Encountered error with status code:', status_code
return True # Don't kill the stream
def on_timeout(self):
print >> sys.stderr, 'Timeout...'
return True # Don't kill the stream
sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['Gandolfini'])
Есть ли способ изменить этот фрагмент кода, чтобы вместо того, чтобы иметь твиты, передаваемые по моему экрану, они отправляются в мою базу данных mongodb?
Спасибо
Ответы
Ответ 1
Вот пример:
import json
import pymongo
import tweepy
consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
class CustomStreamListener(tweepy.StreamListener):
def __init__(self, api):
self.api = api
super(tweepy.StreamListener, self).__init__()
self.db = pymongo.MongoClient().test
def on_data(self, tweet):
self.db.tweets.insert(json.loads(tweet))
def on_error(self, status_code):
return True # Don't kill the stream
def on_timeout(self):
return True # Don't kill the stream
sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
sapi.filter(track=['Gandolfini'])
Это будет писать твиты в базу данных mongodb test
, tweets
.
Надеюсь, что это поможет.
Ответ 2
Я разработал простой инструмент командной строки, который делает именно это.
https://github.com/janezkranjc/twitter-tap
Он позволяет использовать API потоковой передачи или API поиска.