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.

Pytrends genera un error 500 en el script, pero funciona en iPython.

Tengo una lista de términos que quiero consultar en Google Trends usando pytrends (versión 4.7.3), digamos queries = ['bitcoin', 'covid', 'granola', 'water', 'amazon books', 'chocolate', 'bluetooth', 'fountain pen']. Tengo el siguiente script:

import datetime as dt
from pytrends.request import TrendReq

queries = ['bitcoin', 'covid', 'granola', 'water', 'amazon books', 'chocolate', 'bluetooth', 'fountain pen']

def today():
    return dt.date.today().isoformat()

def yesterday():
    return (dt.date.today() - dt.timedelta(days=1)).isoformat()

trends_region = {}

pytrend = TrendReq()

for kw in queries:
    pytrend.build_payload(kw_list=[kw], timeframe=f'{yesterday()} {today()}')
    trends_region[kw] = pytrend.interest_by_region(resolution='COUNTRY')

Cuando ejecuto esto en la terminal, o en iPython con %run script.py, obtengo pytrends.exceptions.ResponseError: The request failed: Google returned a response with code 500.; sin embargo, cuando lo hago paso a paso en iPython, obtengo los datos que quiero (un diccionario cuyos valores son data frames). Por “paso a paso” me refiero a la definición de la lista queries, las funciones today y yesterday, el diccionario vacío trends_region y escribir el bucle for. Hay muchos problemas abiertos con errores similares en el sitio de GitHub del módulo, por ejemplo aquí y aquí, pero tal vez alguien aquí sabe por qué sucede esto.

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error pytrends.exceptions.ResponseError: The request failed: Google returned a response with code 500 indica que hay un problema con la solicitud que se envía a Google Trends. Este es un error del servidor, lo que significa que el problema no está en tu código sino en el servidor o en los datos que estás consultando. Este error puede ocurrir debido a varios motivos, como problemas de red, sobrecarga del servidor o problemas con los datos que se consultan.

    Dado que el script parece funcionar cuando se ejecuta paso a paso, es posible que el problema esté relacionado con la cantidad de solicitudes que se envían desde el script. Se recomienda agregar una pausa entre las solicitudes para evitar saturar el servidor. Puedes hacer esto agregando una función de pausa después de cada solicitud de la siguiente manera:

    import time
    
    ...
    
    for kw in queries:
        pytrend.build_payload(kw_list = [kw], timeframe=f'{yesterday()} {today()}')
        trends_region[kw] = pytrend.interest_by_region(resolution='COUNTRY')
        time.sleep(1) # agregar una pausa de 1 segundo
    

    Esto agregará una pausa de un segundo después de cada solicitud, lo que debería ayudar a evitar sobrecargar el servidor y reducir la probabilidad de encontrar un error 500.

    Si el problema persiste, puede valer la pena revisar los problemas de GitHub para pytrends para ver si hay problemas conocidos o soluciones alternativas. También es posible que los datos que se consultan no estén disponibles o que haya otros problemas con la solicitud que se envía. En este caso, puede ser útil probar consultas o enfoques diferentes para ver si el problema persiste.

Comments are closed.