Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

287
Vistas
Desplazamiento automático del dramaturgo hasta la parte inferior de la página de desplazamiento infinito

Estoy tratando de automatizar el raspado de un sitio con "desplazamiento infinito" con Python y Playwright.

El problema es que Playwright no incluye, hasta el momento, una función de desplazamiento y mucho menos una función de desplazamiento automático infinito.

Por lo que encontré en la red y mis pruebas personales, puedo automatizar un desplazamiento infinito o finito usando la función page.evaluate() y algo de código Javascript.

Por ejemplo, esto funciona:

 for i in range(20): page.evaluate('var div = document.getElementsByClassName("comment-container")[0];div.scrollTop = div.scrollHeight') page.wait_for_timeout(500)

El problema con este enfoque es que funcionará especificando una cantidad de pergaminos o diciéndole que continúe para siempre con un ciclo while True .

Necesito encontrar una manera de decirle que siga desplazándose hasta que se cargue el contenido final.

Este es el Javascript que estoy probando actualmente en page.evaluate() :

 var intervalID = setInterval(function() { var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight; console.log('fail') }, 1000); var anotherID = setInterval(function() { if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) { clearInterval(intervalID); }}, 1000)

Esto no funciona ni en mi navegador firefox ni en el navegador firefox de Playwright. Regresa inmediatamente y no ejecuta el código en intervalos.

Estaría agradecido si alguien pudiera decirme cómo puedo, usando Playwright, crear una función de desplazamiento automático que detectará y se detendrá cuando llegue al final de una página web que se carga dinámicamente.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Así que encontré una solución de trabajo.

Lo que hice fue combinar Javascript con código python Playwright.

Comienzo setInterval con un temporizador de 200 ms para desplazarme hacia abajo en la página con page.evaluate() y luego lo sigo con un bucle de python que verifica cada segundo si la altura total de la página (desplazamiento incluido) ha cambiado. Si cambia, continúa desplazándose y si no ha cambiado, el desplazamiento ha terminado.
Esto es lo que parece:

 page.evaluate( """ var intervalID = setInterval(function () { var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight; }, 200); """ ) prev_height = None while True: curr_height = page.evaluate('(window.innerHeight + window.scrollY)') if not prev_height: prev_height = curr_height time.sleep(1) elif prev_height == curr_height: page.evaluate('clearInterval(intervalID)') break else: prev_height = curr_height time.sleep(1)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda