API de raspado universalCaracterísticasJS Render

Renderizado JS

Universal Scraping API es un potente servicio de recuperación de contenido web que admite escenarios complejos de renderizado e interacción de páginas web.

Estructura de solicitud básica

{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://example.com",
    "js_render": false,
    "headless": false
  },
  "proxy": {
    "country": "US"
  }
}

Características principales

Renderizado de JavaScript

El renderizado de JavaScript permite el manejo de contenido cargado dinámicamente y SPA (aplicaciones de una sola página). Habilita un entorno de navegador completo, admitiendo interacciones y requisitos de renderizado de páginas más complejos.

js_render=true, utilizaremos el navegador para la solicitud.

{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://www.google.com/",
    "js_render": true
  },
  "proxy": {
    "country": "US"
  }
}

Instrucciones de JavaScript

Proporciona un amplio conjunto de directivas de JavaScript que le permiten interactuar dinámicamente con las páginas web.

Estas directivas le permiten hacer clic en elementos, completar formularios, enviar formularios o esperar a que aparezcan elementos específicos, lo que proporciona flexibilidad para tareas como hacer clic en un botón “leer más” o enviar un formulario.

{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://example.com",
    "js_render": true,
    "js_instructions": [
      {
        "wait_for": [
          ".dynamic-content",
          30000
        ]
        // Wait for element
      },
      {
        "click": [
          "#load-more",
          1000
        ]
        // Click element
      },
      {
        "fill": [
          "#search-input",
          "search term"
        ]
        // Fill form
      },
      {
        "keyboard": [
          "press",
          "Enter"
        ]
        // Simulate key press
      },
      {
        "evaluate": "window.scrollTo(0, document.body.scrollHeight)"
        // Execute custom JS
      }
    ]
  }
}

Aquí hay algunas acciones comunes que puede realizar con las Instrucciones de JavaScript:

Referencia de instrucciones de JavaScript

InstrucciónSintaxisDescripciónEjemplo
wait_for[selector, timeout]Esperar a que aparezca el elemento{"wait_for": [".content", 30000]}
click[selector, delay]Hacer clic en el elemento{"click": [".button", 1000]}
fill[selector, value]Rellenar formulario{"fill": ["#input", "text"]}
waitmillisecondsTiempo de espera fijo{"wait": 2000}
evaluatejavascript_codeEjecutar código JS{"evaluate": "console.log('test')"}
keyboard[action, value, delay?]Operación de tecladoVer tabla de operaciones de teclado a continuación

Operaciones de teclado

OperaciónSintaxisDescripciónEjemplo
Presionar tecla["press", keyInput]Presionar una tecla keyInput específica{"keyboard": ["press", "Enter"]}
Escribir texto["type", text, delay?]Escribir texto con retraso opcional{"keyboard": ["type", "Hello", 20]}
Tecla abajo["down", key]Mantener pulsada una tecla{"keyboard": ["down", "Shift"]}
Tecla arriba["up", key]Soltar una tecla{"keyboard": ["up", "Shift"]}

Tipos de KeyInput especiales compatibles: https://pptr.dev/api/puppeteer.keyinput

Control de recursos

Sistema de control de carga de recursos para optimizar el rendimiento y el uso del ancho de banda.

{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://example.com",
    "js_render": true,
    "block": {
      "resources": [
        "Image",
        "Font",
        "Stylesheet",
        "Script"
      ],
      "urls": [
        // Optional, URL pattern-based blocking
        "*.analytics.com/*",
        "*/ads/*"
      ]
    }
  }
}

Referencia completa de tipos de recursos:

Tipo de recursoDescripciónImpacto
DocumentDocumento principal e iframesContenido principal de la página
StylesheetArchivos CSSEstilo y diseño de la página
ImageImágenes e iconosContenido visual
MediaRecursos de audio y videoContenido multimedia
FontFuentes webRenderizado de texto
ScriptArchivos JavaScriptFuncionalidad de la página
TextTrackSubtítulos y subtítulos de videoAccesibilidad multimedia
XHRLlamadas XMLHttpRequestSolicitudes asíncronas heredadas
FetchSolicitudes de la API FetchSolicitudes asíncronas modernas
PrefetchRecursos precargadosOptimización del rendimiento
EventSourceEventos enviados por el servidorActualizaciones en tiempo real
WebSocketConexiones WebSocketComunicación bidireccional
ManifestManifiestos de aplicaciones webConfiguración de PWA
SignedExchangeIntercambios HTTP firmadosAutenticidad del contenido
PingSolicitudes PingAnálisis y seguimiento
CSPViolationReportInformes de violación de CSPSupervisión de seguridad
PreflightSolicitudes de preflight CORSSeguridad de origen cruzado
OtherRecursos no clasificadosVarios

Ejemplo de uso:

{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://example.com",
    "js_render": true,
    "block": {
      "resources": [
        "Image",
        "Font",
        "Stylesheet",
        "Script",
        "Media",
        "Ping",
        "Prefetch"
      ]
    }
  }
}

Mejores prácticas para el bloqueo de recursos:

  1. Optimización del rendimiento

    • Habilitar js_render solo cuando sea necesario
    • Usar el bloqueo de recursos con prudencia, bloquear recursos no esenciales para una carga más rápida
    • Considerar el bloqueo de Prefetch y Ping para reducir el uso de la red
    • Mantener los recursos Document y Script críticos desbloqueados
  2. Gestión del ancho de banda

    • Bloquear Image y Media para páginas con uso intensivo de ancho de banda
    • Considerar el bloqueo de Font para usar fuentes del sistema en su lugar
  3. Mejora de la estabilidad

    • Implementar mecanismos de reintento de solicitudes
    • Agregar lógica de manejo de errores
    • Usar wait_for en lugar de wait fijo
  4. Eficiencia de los recursos

    • Cargar recursos a demanda
    • Cerrar conexiones innecesarias rápidamente

Nota: Las cadenas de tipo de recurso distinguen mayúsculas de minúsculas. Use coincidencias exactas como se muestra en la tabla de referencia.