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.

Raspar texto con Playwright es lento en una parte del código (utilizando page.locator).

He creado un script en Playwright para extraer texto. Esta es la parte en la que tengo problemas, aquí extraigo el nombre de una serie utilizando un localizador:

Series

global nfo_series
try:
nfo_series = page.locator(“#Series > span:nth-child(1)”)
nfo_series = nfo_series.inner_text()
logger_scraper.info(‘nfo_series es ahora:%s’, nfo_series)
except:
logger_scraper.info(‘Este libro no tiene serie.’)

Y funciona, cuando las series no están presentes se omite, pero tarda 30 segundos en continuar el código. El registro está abajo, ¿cuál es el problema, puedo mejorarlo?

19:28:31 nfo_author es ahora:Thomas Fincham
19:29:01 Este libro no tiene serie.

Creo que es debido al bloque try, pero ¿por qué? ya que tengo el mismo código, por ejemplo, para el autor y es rápido. Sé que no es bueno usar Playwright, hay módulos mejores.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la instrucción try está causando un retraso en tu script. Cuando no se encuentra el localizador para la serie, se genera una excepción y el script tiene que esperar a que se maneje la excepción antes de continuar. Esto puede provocar un retraso en la ejecución del script.

    Para mejorar el rendimiento, podrías intentar usar una instrucción condicional en lugar de un bloque try-except. Por ejemplo:

    # Serie
    global nfo_series
    series_locator = page.locator("#Series > span:nth-child(1)")
    if not series_locator.is_none():
        nfo_series = series_locator.inner_text()
        logger_scraper.info('nfo_series ahora es: %s', nfo_series)
    else:
        logger_scraper.info('Este libro no tiene serie.')
    

    Este código verifica si el localizador del elemento de la serie está presente antes de intentar extraer el texto. Si no está presente, se salta el paso de extracción y registra un mensaje. Esto debería hacer que el código sea más rápido y eficiente.

    Por último, si bien es cierto que Playwright puede no ser el módulo más eficiente para el web scraping, sigue siendo una opción viable dependiendo de tus requisitos y preferencias. Siempre es una buena idea explorar diferentes bibliotecas y módulos para encontrar el mejor ajuste para tu proyecto.

Comments are closed.