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.

Selenium espera mucho tiempo mientras busca un elemento.

Estoy trabajando en un software para encontrar direcciones de correo electrónico en los códigos fuente de los sitios web.
Pero a veces los códigos fuente de los sitios web son muy largos, por lo que la búsqueda lleva mucho tiempo.
¿Cómo puedo configurar un tiempo determinado para esto y hacer que cambie a la otra URL del sitio web después de que expire este tiempo?

    for query in my_list:
        results.append(search(query, tld="com", num=3, stop=3, pause=2))
for result in results:
    url = list(result)
    print(*url,sep='\n')
    for site in url:
        driver = webdriver.Chrome()
        driver.get(site)
        doc = driver.page_source
        emails = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
        for email in emails:
            print(email)
results = []
    start_time = time.time()
    for query in my_list:
        results.append(search(query, tld="com", num=3, stop=3, pause=2))
for result in results:
    url = list(result)
    print(*url,sep='\n')
    for site in url:
        driver = webdriver.Chrome()
        driver.get(site)
        doc = driver.page_source
        emails = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
        for email in emails:
            print(email)
if time.time() - start_time > 10:
    # si pasan 10 segundos, hacer algo
    start_time = time.time()
time.sleep(3)
driver.close()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para establecer un tiempo específico para que el código se ejecute y cambie a otra URL del sitio web, puedes utilizar el módulo de tiempo en Python. Una forma de hacerlo es definiendo una variable start_time al inicio de tu código y utilizando una declaración if para verificar el tiempo transcurrido desde start_time. Por ejemplo, si el tiempo transcurrido es mayor a 10 segundos, puedes utilizar el método driver.close() para cerrar la pestaña del navegador y avanzar a la siguiente URL.

    Así es como puedes modificar tu código para agregar la verificación del tiempo:

    import time
    
    resultados = []
    start_time = time.time()
    for consulta in mi_lista:
        resultados.append(busqueda(consulta, tld="com", num=3, stop=3, pause=2))
    
    for resultado in resultados:
        url = list(resultado)
        print(*url,sep='\n')
        for sitio in url:
            driver = webdriver.Chrome()
            driver.get(sitio)
            doc = driver.page_source
            correos = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
            for correo in correos:
                print(correo)
            if time.time() - start_time > 10:
                # si pasan 10 segundos, cierra la pestaña del navegador y avanza a la siguiente URL
                start_time = time.time()
                driver.close()
                break # salir del bucle actual y avanzar a la siguiente URL
            time.sleep(3)
            driver.close()
    

    En este ejemplo, el código verifica si han transcurrido más de 10 segundos desde que se estableció la variable start_time. Si es así, cierra la pestaña del navegador actual y pasa a la siguiente URL en el bucle. Se utiliza la instrucción break para salir del bucle actual y avanzar a la siguiente URL. El método time.sleep(3) se utiliza para agregar una pausa de 3 segundos antes de cerrar la pestaña del navegador actual.

    Puedes ajustar los valores para el tiempo transcurrido, tiempo de espera y otros parámetros según tus necesidades.

Comments are closed.