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ón | Sintaxis | Descripción | Ejemplo |
---|---|---|---|
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"]} |
wait | milliseconds | Tiempo de espera fijo | {"wait": 2000} |
evaluate | javascript_code | Ejecutar código JS | {"evaluate": "console.log('test')"} |
keyboard | [action, value, delay?] | Operación de teclado | Ver tabla de operaciones de teclado a continuación |
Operaciones de teclado
Operación | Sintaxis | Descripción | Ejemplo |
---|---|---|---|
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 recurso | Descripción | Impacto |
---|---|---|
Document | Documento principal e iframes | Contenido principal de la página |
Stylesheet | Archivos CSS | Estilo y diseño de la página |
Image | Imágenes e iconos | Contenido visual |
Media | Recursos de audio y video | Contenido multimedia |
Font | Fuentes web | Renderizado de texto |
Script | Archivos JavaScript | Funcionalidad de la página |
TextTrack | Subtítulos y subtítulos de video | Accesibilidad multimedia |
XHR | Llamadas XMLHttpRequest | Solicitudes asíncronas heredadas |
Fetch | Solicitudes de la API Fetch | Solicitudes asíncronas modernas |
Prefetch | Recursos precargados | Optimización del rendimiento |
EventSource | Eventos enviados por el servidor | Actualizaciones en tiempo real |
WebSocket | Conexiones WebSocket | Comunicación bidireccional |
Manifest | Manifiestos de aplicaciones web | Configuración de PWA |
SignedExchange | Intercambios HTTP firmados | Autenticidad del contenido |
Ping | Solicitudes Ping | Análisis y seguimiento |
CSPViolationReport | Informes de violación de CSP | Supervisión de seguridad |
Preflight | Solicitudes de preflight CORS | Seguridad de origen cruzado |
Other | Recursos no clasificados | Varios |
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:
-
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
yPing
para reducir el uso de la red - Mantener los recursos
Document
yScript
críticos desbloqueados
- Habilitar
-
Gestión del ancho de banda
- Bloquear
Image
yMedia
para páginas con uso intensivo de ancho de banda - Considerar el bloqueo de
Font
para usar fuentes del sistema en su lugar
- Bloquear
-
Mejora de la estabilidad
- Implementar mecanismos de reintento de solicitudes
- Agregar lógica de manejo de errores
- Usar
wait_for
en lugar dewait
fijo
-
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.