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.

Error de paginación de Tweepy: KeyError: 0

Intenté usar la paginación de tweepy basada en el código proporcionado en su documentación:

import tweepy

auth = tweepy.AppAuthHandler("Consumer Key aquí", "Consumer Secret aquí")
api = tweepy.API(auth)

for status in tweepy.Cursor(api.search_tweets, "Tweepy", count=100).items(250):
    print(status.id)

Sin embargo, obtengo el siguiente error:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_16136/3940301818.py in <module>
      1 for status in tweepy.Cursor(api.search_tweets, "Tweepy", count=100).items(250):
      2     print(status.id)

C:\ProgramData\Anaconda3\lib\site-packages\tweepy\cursor.py in __next__(self)
     84 
     85     def __next__(self):
---> 86         return self.next()
     87 
     88     def next(self):

C:\ProgramData\Anaconda3\lib\site-packages\tweepy\cursor.py in next(self)
    290         self.page_index += 1
    291         self.num_tweets += 1
--> 292         return self.current_page[self.page_index]
    293 
    294     def prev(self):

KeyError: 0

¿Alguien puede explicar y corregir el error, por favor?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El KeyError ocurre cuando el cursor intenta acceder a un elemento en la lista que no existe. En este caso, parece que hay un problema al acceder al primer elemento (índice 0) en la lista current_page.

    Para rectificar este error, puedes intentar restablecer el cursor llamando al método .pages() antes del bucle:

    for page in tweepy.Cursor(api.search_tweets, "Tweepy", count=100).pages(2):
        for status in page:
            print(status.id)
    

    Aquí, .pages(2) especifica que solo queremos iterar a través de las dos primeras páginas de resultados. Puedes modificar el recuento de páginas según tus necesidades.

    Alternativamente, puedes intentar usar el método .items() con un recuento mayor para recuperar todos los resultados de una vez:

    for status in tweepy.Cursor(api.search_tweets, "Tweepy", count=1000).items(250):
        print(status.id)
    

    Esto recuperará 250 objetos de estado a la vez, en lugar de iterar a través de páginas.

Comments are closed.