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.
Activar el renderizado
Sección titulada «Activar el renderizado»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.
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.
Esperar contenido
Sección titulada «Esperar contenido»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:
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).
Forzar tiempos de espera
Sección titulada «Forzar tiempos de espera»Limita el tiempo total que el navegador puede dedicar a una página con timeout (en milisegundos):
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.
Instrucciones de JavaScript
Sección titulada «Instrucciones de JavaScript»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.
Capturas de pantalla
Sección titulada «Capturas de pantalla»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.
Cuándo omitir el renderizado
Sección titulada «Cuándo omitir el renderizado»- 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.
Siguiente
Sección titulada «Siguiente»- Reglas de extracción, extrae datos estructurados de la página renderizada.
- Advanced, cabeceras, cookies, capturas de pantalla, POST.