es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El objeto ‘Cursor’ no es iterable.

Estoy intentando obtener la ubicación de los tweets que he recopilado usando el paquete ‘tweepy’:

import tweepy as tw

consumer = ...
consumer_secret = ...
access_token = ...
access_token_secret = ...

auth = tw.OAuthHandler(consumer, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tw.API(auth, wait_on_rate_limit=True)

search_words = "delante"
date_since = "2022-01-03"

tweets = tw.Cursor(api.search_tweets,
              q = search_words,
              lang = "es",
              since = date_since)

loc = []
for tweet in tweets:
    loc.append(tweet.user.location)

Pero obtengo este error:

‘El objeto ‘Cursor’ no es iterable.

La salida de ‘type(tweets)’ es ‘tweepy.cursor.Cursor’.

¿Qué es lo que me falta?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que necesitas llamar al método items() en tu objeto Cursor para poder iterar a través de los tweets. Este método devuelve un iterador que puedes recorrer para obtener cada tweet.

    Aquí está el código actualizado:

    import tweepy as tw
    
    consumer = ...
    consumer_secret = ...
    access_token = ...
    access_token_secret = ...
    
    auth = tw.OAuthHandler(consumer, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tw.API(auth, wait_on_rate_limit=True)
    
    search_words = "delante"
    date_since = "2022-01-03"
    
    tweets = tw.Cursor(api.search_tweets,
                  q = search_words,
                  lang = "es",
                  since = date_since).items()
    
    loc = []
    for tweet in tweets:
        loc.append(tweet.user.location)
    

    Observa que hemos agregado la llamada al método items() al final de la creación del objeto Cursor. Esto devuelve un iterador que podemos recorrer usando un bucle for para obtener cada tweet.

Comments are closed.