Ir al contenido
Iniciar sesión Registrarse

Renderizado de JavaScript

Las SPA y las páginas con mucho JS necesitan una ejecución real del navegador. Web Scraping API se encarga de esto con un solo parámetro.

Añade render_js=1 a cualquier solicitud. Shifter inicia una nueva instancia de Chrome headless, navega hasta la URL y devuelve el DOM tras el renderizado.

Ventana de terminal
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"

El renderizado de JS se factura con el mismo 1 crédito por solicitud correcta que las peticiones estáticas. Sin recargo.

La mayoría de las SPA terminan de cargar cuando aparece un elemento específico. Usa wait_for_css para bloquear hasta que ese selector se renderice:

Ventana de terminal
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://shop.example.com&render_js=1&wait_for_css=.product-price"

La solicitud se completa en cuanto .product-price está en el DOM, o falla al agotarse el tiempo de espera (30 s por defecto).

Limita el tiempo total que el navegador puede dedicar a una página con timeout (en milisegundos):

Ventana de terminal
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"

Útil para hacer scraping de paneles de carga lenta cuando prefieres obtener lo que sea visible tras 10 segundos en lugar de un renderizado completo.

Desplázate, haz clic o ejecuta pasos arbitrarios antes de la captura usando js_instructions (JSON codificado en URL). Patrones habituales:

Desplazarse para cargar feeds infinitos:

[{"action": "scrollTo", "selector": "footer", "timeout": 5000, "block": "start"}]

Hacer clic en un botón antes de hacer scraping:

[{"action": "click", "selector": "button.load-more", "timeout": 3000}]

Encadenar varios pasos:

[
{"action": "click", "selector": "button.accept-cookies"},
{"action": "scrollTo", "selector": "div.results"},
{"action": "wait", "duration": 2000}
]

Pasa el array como una cadena codificada en URL en js_instructions.

Toma una captura de pantalla de página completa en lugar del DOM añadiendo screenshot=1. La respuesta es un PNG binario. Consulta Advanced.

  • Páginas HTML estáticas (artículos de noticias, entradas de blog, contenido estilo RSS)
  • API JSON (usa una petición directa, no el endpoint de scraping)
  • Archivos y binarios

Omitir render_js es más económico en latencia, aunque los créditos son los mismos.