← Todos los artículos

Browser Tasks: cómo extraer datos de sitios con uso intensivo de JavaScript

Más del 70 % de los sitios web modernos necesitan JavaScript para renderizar su contenido. Así es como las tareas de navegador de FourA obtienen la página completa cuando las solicitudes HTTP devuelven un resultado vacío.

Más del 70% de los sitios web modernos dependen de JavaScript para renderizar su contenido. Una request HTTP estándar solo ve la estructura HTML inicial. Los datos reales se cargan después de que JavaScript se ejecuta, por lo que las herramientas de scraping tradicionales devuelven páginas vacías.

Las tareas de navegador de FourA resuelven esto ejecutando una instancia real de headless Chrome para cada request.

Cómo funciona

Cuando envías una tarea con type: "browser", FourA:

  1. Inicia un navegador headless Chrome
  2. Navega a la URL de destino
  3. Espera a que JavaScript se ejecute y el DOM se estabilice
  4. Opcionalmente, espera a que aparezca un selector CSS específico
  5. Devuelve el HTML completamente renderizado

Todo el proceso ocurre en la infraestructura de FourA. Obtienes HTML limpio sin necesidad de instalar un navegador, configurar Puppeteer ni gestionar actualizaciones de Chrome.

Cuándo usar tareas de navegador

Usa tareas de navegador para:

  • Aplicaciones de página única (React, Vue, Angular)
  • Páginas con contenido cargado de forma diferida (scroll infinito, botones "cargar más")
  • Sitios que requieren consentimiento de cookies o configuración inicial de JS
  • Contenido detrás de flujos de autenticación en el cliente

Mantén las tareas single para:

  • Páginas HTML renderizadas en el servidor (sitios de noticias, blogs, wikis)
  • REST APIs que devuelven JSON directamente
  • Casos donde la velocidad es la prioridad (las tareas de navegador tardan entre 2 y 10 segundos frente a menos de 1 segundo para tareas individuales)

Ejemplo: scraping de una app React

curl -X POST https://eu.api.foura.ai/api/v1/tasks \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/dashboard",
    "type": "browser",
    "options": {
      "waitFor": ".dashboard-content",
      "timeout": 15000
    }
  }'

El selector waitFor le indica a FourA que espere hasta que .dashboard-content aparezca en el DOM antes de capturar la página. Esto garantiza que todos los datos asíncronos se hayan cargado.

Consejos de rendimiento

  • Usa siempre waitFor con un selector específico en lugar de depender de timeouts. Es más rápido y más confiable.
  • Establece un timeout razonable. 15 segundos cubre la mayoría de las SPAs. Auméntalo solo para backends realmente lentos.
  • Usa single de forma predeterminada y cambia a browser solo cuando falte contenido en la response.

Próximos pasos

Estamos trabajando en capacidades adicionales de navegador, como captura de pantalla, generación de PDF y navegación de múltiples pasos (hacer clic, scroll, completar formularios). Pero incluso sin estas funciones adicionales, las tareas de navegador ya resuelven el principal problema: obtener el contenido real de páginas renderizadas con JavaScript en lugar de una estructura vacía.

Consulta la documentación para ver la comparación completa de tipos de tareas.