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 Tweepy y csv: parámetro inesperado para include_rts e importar json a csv.

Reinicié mi proyecto que dejé de hacer hace unos años. Con algo de investigación, hice el proyecto compatible con las versiones actualizadas de la API y funcionó sin problemas. Mi código que funcionaba hace 3 semanas ahora no funciona. Primero, estaba obteniendo errores inesperados de parámetros de “include_rts” y “since”, después de hacer algunas investigaciones, cambié “since” por “until” y lo solucioné. Cuando quité “include_rts” del código y cambié mis palabras clave (las agregué como “-is=retweet”) y el código no dio error, pero el archivo CSV del cual necesito importar los datos no se creó. Aquí está el código que creo que podría ser el problema:

           def escribir_tweets(palabra_clave, archivo):
               if os.path.exists(archivo):
                  df = pd.read_csv(archivo, header=0)
               else:
                  df = pd.DataFrame(columns=COLS)

               for pagina in tweepy.Cursor(api.search_tweets, q=palabra_clave, count=200, include_rts=False, until='2021-12-26').pages(1):

                    for estado in pagina:
                       nueva_entrada = []
                       estado = estado._json

                       single_tweet_df = pd.DataFrame([nueva_entrada], columns=COLS)
                       df = df.append(single_tweet_df, ignore_index=True)

                       csvFile = open(archivo, 'a' ,encoding='utf-8')
                       df.to_csv(csvFile, mode='a', columns=COLS, index=False, encoding="utf-8")

elective_course_keywords = '#Parallel_Programming -is=retweet OR #Cloud_Computing -is=retweet Or #computer_science -is=retweet OR #machine_learning -is=retweet'

elective_course_tweets = "C:/Users/User/Desktop/TwitterDatas/datos_tweets_curso_electivo.csv"

escribir_tweets(elective_course_keywords, elective_course_tweets)

Gracias de antemano por cualquier ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar en la función write_tweets. En el bucle for se crea una nueva lista vacía llamada new_entry, pero luego no se le agregan valores. Esto significa que single_tweet_df estará vacío y cuando se agregue a df, seguirá estando vacío. Esto podría ser la razón por la cual el archivo CSV no se crea o no se actualiza.

    Para solucionar esto, debes agregar los valores relevantes a new_entry. Por ejemplo, podrías agregar el texto del tweet, el ID del usuario, la fecha, etc.:

    new_entry = [
        status['text'],
        status['user']['id_str'],
        status['created_at'],
        # agregar más campos aquí según sea necesario...
    ]
    

    También parece que puede haber un error de ortografía en la llamada a Cursor. Debería ser api.search, no api.search_tweets.

    for page in tweepy.Cursor(api.search, q=keyword, count=200, include_rts=False, until='2021-12-26').pages(1):
    

    Finalmente, vale la pena señalar que la API de Twitter tiene límites de velocidad, por lo que si estás alcanzando esos límites, es posible que tu código no funcione de manera constante. Es posible que debas agregar alguna lógica de limitación de velocidad o considerar el uso de un servicio como la API empresarial de Twitter.

Comments are closed.