python - ¿Cómo puedo consumir tweets de la API de transmisión de Twitter y almacenarlos en mongodb?
pymongo tweepy (2)
Necesito desarrollar una aplicación que me permita realizar un seguimiento de los tweets y guardarlos en un mongodb para un proyecto de investigación (como podría saber, soy un novato, así que por favor, tengan paciencia conmigo). He encontrado este fragmento de código que envía tweets a través de mi ventana de terminal:
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''])
¿Hay alguna manera de modificar este fragmento de código para que, en lugar de tener tweets transmitidos por mi pantalla, se envíen a mi base de datos mongodb?
Gracias
Aquí hay un ejemplo:
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''])
Esto escribirá tweets en la base de datos de test
mongodb, colección de tweets
.
Espero que ayude.
He desarrollado una herramienta de línea de comandos simple que hace exactamente esto.
https://github.com/janezkranjc/twitter-tap
Permite utilizar la API de streaming o la API de búsqueda.