with read part obtener how from examples data collecting python twitter nlp tweepy twitter-streaming-api

python - read - Filtrar las fuentes de Twitter solo por idioma



twitter python (5)

Estoy usando Tweepy API para extraer feeds de Twitter. Quiero extraer todos los feeds de Twitter de un idioma específico solamente. El filtro de idioma solo funciona si se proporciona un filtro de track . El siguiente código devuelve 406 error:

l = StdOutListener() auth = OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) stream = Stream(auth, l) stream.filter(languages=["en"])

¿Cómo puedo extraer todos los tweets de cierto idioma usando Tweepy?


Además de obtener tweets filtrados directamente, puede filtrarlos después de recibir todos los tweets de diferentes idiomas al:

tweets = api.search("python") for tweet in tweets: if tweet.lang == "en": print(tweet.text) #Do the stuff here

Espero eso ayude.


Esto funcionó para mí.

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) a=input("Enter Tag: ") tweets = api.search(a, count=200) a=[] for tweet in tweets: if tweet.lang == "en": a.append(tweet.text)


No puedes (sin acceso especial). La transmisión de todos los tweets (sin filtrar) requiere una conexión a la manguera de fuego , que solo Twitter otorga en casos de uso específicos. Honestamente, el Firehose no es realmente necesario, el uso correcto de la track puede hacer que tengas más tweets de los que sabes qué hacer con ellos.

Intenta usar algo como esto:

stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc

Filtrar por palabras como esa te dará muchos, muchos tweets. Si desea datos reales para las palabras más utilizadas, consulte este artículo de Time: Las 500 palabras más utilizadas en Twitter . Puede usar hasta 400 palabras clave, pero es probable que se acerque al límite del 1% de los tweets en un intervalo de tiempo determinado. Si el parámetro de tu track coincide con el 60% de todos los tweets en un momento dado, aún así solo obtendrás el 1% (lo que es MUCHOS tweets).


Pruebe lang=''en'' param en Cursor() por ejemplo

tweepy.Cursor(.. lang=''en'')


Puede ver los argumentos para el método de seguimiento en el código github https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py

Coloque los idiomas en una matriz de códigos ISO_639-1.

Son:

filter(self, follow=None, track=None, is_async=False, locations=None, stall_warnings=False, languages=None, encoding=''utf8'', filter_level=None):

Así que para rastrear por idiomas solo ponemos:

class Listener(StreamListener): def on_data(self, data): j = json.loads(data) t = { ''screenName'' : j[''user''][''screen_name''], ''text:'': j[''text''] } print(t) return(True) def on_status(self, status): print(status.text) auth = OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) stream = Stream(auth=auth, listener=Listener(),wait_on_rate_limit=True,wait_on_rate_limit_notify=True) stream.filter(track=[''Trump''],languages=["en","fr","es"])