tutorial bot python twitter tweepy

tutorial - twitter bot python



devolver tweets reales en tweepy? (5)

Estaba escribiendo un programa de Twitter usando tweepy. Cuando ejecuto este código, imprime los valores de Python ... para ellos, como

<tweepy.models.Status object at 0x95ff8cc>

Lo cual no es bueno ¿Cómo obtengo el tweet real?

import tweepy, tweepy.api key = XXXXX sec = XXXXX tok  = XXXXX tsec = XXXXX auth = tweepy.OAuthHandler(key, sec) auth.set_access_token(tok, tsec) api = tweepy.API(auth) pub = api.home_timeline() for i in pub:         print str(i)


En general, puede usar el comando dir() incorporado en Python para inspeccionar un objeto.

Parece que la documentación de Tweepy es muy deficiente aquí, pero me imagino que los objetos de estado reflejan la estructura del formato de estado de REST de Twitter, ver (por ejemplo) https://dev.twitter.com/docs/api/1/get/ estados / home_timeline

Entonces, prueba

print dir(status)

para ver lo que vive en el objeto de estado

o solo, digamos,

print status.text print status.user.screen_name


Eche un vistazo al método getstate () get que puede usarse para inspeccionar el objeto devuelto

for i in pub: print i.__getstate__()


El método api.home_timeline() devuelve una lista de 20 objetos tweepy.models.Status que corresponden a los 20 tweets principales. Es decir, cada Tweet se considera como un objeto de la clase de Estado. Cada objeto de estado tiene una serie de atributos como id, texto, usuario, lugar, created_at, etc.

El siguiente código imprimirá la identificación de tweet y el texto:

tweets = api.home_timeline() for tweet in tweets: print tweet.id, " : ", tweet.text


de los tweets reales, si desea un tweet específico, debe tener una identificación de tweet y usar

tweets = self.api.statuses_lookup(tweetIDs) for tweet in tweets: #tweet obtained print(str(tweet[''id''])+str(tweet[''text'']))

o si desea tweets en general, use Twitter Stream api

class StdOutListener(StreamListener): def __init__(self, outputDatabaseName, collectionName): try: print("Connecting to database") conn=pymongo.MongoClient() outputDB = conn[outputDatabaseName] self.collection = outputDB[collectionName] self.counter = 0 except pymongo.errors.ConnectionFailure as e: print ("Could not connect to MongoDB:") def on_data(self,data): datajson=json.loads(data) if "lang" in datajson and datajson["lang"] == "en" and "text" in datajson: self.collection.insert(datajson) text=datajson["text"].encode("utf-8") #The text of the tweet self.counter += 1 print(str(self.counter) + " " +str(text)) def on_error(self, status): print("ERROR") print(status) def on_connect(self): print("You''re connected to the streaming server. l=StdOutListener(dbname,cname) auth=OAuthHandler(Auth.consumer_key,Auth.consumer_secret) auth.set_access_token(Auth.access_token,Auth.access_token_secret) stream=Stream(auth,l) stream.filter(track=stopWords)

crear una clase Stdoutlistener que se hereda de la función OverLide de StreamListener on_data, y se devuelve tweet en formato json, esta función se ejecuta cada vez que se obtiene tweet, los tweets se filtran de acuerdo a stopwords, que es una lista de las palabras que quiere en sus tuits


En una instancia de Estado tweepy, puede acceder al atributo _json , que devuelve un dict que representa los contenidos originales de Tweet .

Por ejemplo:

type(status) # tweepy.models.Status type(status._json) # dict status._json.keys() # dict_keys([''favorite_count'', ''contributors'', ''id'', ''user'', ...])