Renderizado de JS y control del navegador
Aprende a usar un parámetro render para definir instrucciones del navegador en Web Scraper API, de modo que puedas extraer páginas dinámicas complejas.
Renderizado de JavaScript
Si la página que quieres extraer usa JavaScript para cargar sus datos en el DOM, añade el render parámetro a tu solicitud. Luego la página se renderiza completamente antes de devolver el resultado, en uno de dos formatos:
html
El HTML sin procesar de la página completamente renderizada
png
Una captura de pantalla (PNG) codificada en Base64 de la página renderizada
Ejemplo de solicitud
curl --user "USERNAME:PASSWORD" \
'https://realtime.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \\
-d '{"source": "universal", "url": "https://www.example.com", "render": "html"}'import requests
from pprint import pprint
# Estructura del payload.
payload = {
'source': 'universal',
'url': 'https://www.example.com',
'render': 'html',
}
# Obtén la respuesta.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
# En lugar de una respuesta con el estado del trabajo y la URL de resultados, esto devolverá la
# respuesta JSON con el resultado.
pprint(response.json())El renderizado de JavaScript tarda más en extraer la página. Establece un timeout en el lado del cliente de 180 segundos si usas Realtime o Proxy Endpoint como métodos de integración.
Para garantizar el menor consumo de tráfico, nuestro sistema no carga activos innecesarios durante el renderizado de la página.
Forzar el renderizado en páginas específicas
Para una extracción exitosa, algunos tipos de páginas de dominios específicos requieren renderizado debido a su contenido dinámico. Para estas, nuestro sistema aplica automáticamente el renderizado incluso si no estableces el render parámetro, para que siempre obtengas datos precisos y fiables de estas páginas, que de otro modo son difíciles.
Ten en cuenta que los trabajos renderizados consumen más tráfico que los no renderizados.
La lista completa de objetivos afectados se mantiene en el archivo de abajo. Queremos que nuestros usuarios sean plenamente conscientes de ello al extraer las siguientes páginas:
Si deseas desactivar el renderizado, puedes hacerlo añadiendo el siguiente parámetro a tus solicitudes:
Instrucciones del navegador
Cuando una página necesita interacción, como hacer clic en un botón, introducir un término de búsqueda o desplazarte para cargar más elementos, puedes definir tus propias browser_instructions que se ejecutan mientras la página se renderiza.
La forma más sencilla de crear instrucciones del navegador es el generador visual impulsado por IA en el Playground de Web Scraper API. Lee sobre ello aquí.
Inicio rápido
Ante todo, las instrucciones del navegador requieren el render parámetro, ya sea html o png, y se proporcionan como una lista en el browser_instructions campo. Cada elemento de la lista se ejecuta en orden.
Supón que quieres buscar cajas de pizza en un sitio web — escribe el término en el campo de búsqueda, haz clic en el botón de búsqueda y espera 5 segundos a que carguen los resultados:
El resultado contiene el HTML después de que las instrucciones se hayan ejecutado:
El HTML extraído debería verse así:

Obtención de recursos del navegador
Proporcionamos una instrucción independiente del navegador para obtener recursos del navegador.
La función se define aquí:
Usando fetch_resource hará que el trabajo devuelva la primera ocurrencia de un recurso Fetch/XHR que coincida con el formato proporcionado en lugar del HTML que se está apuntando.
Supongamos que queremos apuntar a un recurso GraphQL que se obtiene al visitar de forma orgánica una página de producto en el navegador. Proporcionaremos la información del trabajo así:
Estas instrucciones darán como resultado algo así:
Lista de instrucciones de navegador compatibles
Argumentos generales
Todas las instrucciones definidas a continuación tienen un conjunto coherente de argumentos. Los argumentos son los siguientes.
escribir
Tipo:
Enum["click", "input", "scroll", "scroll_to_bottom", "wait", "wait_for_element", "fetch_resource"]Descripción: Tipo de instrucción del navegador.
Obligatorio:
verdadero
timeout_s
Tipo:
enteroDescripción: Cuánto tiempo hasta que se omita la acción si no se completa a tiempo.
Restricciones: 0 <
timeout_s<= 60Valor predeterminado: 5
wait_time_s
Tipo:
enteroDescripción: Cuánto esperar antes de ejecutar la siguiente acción.
Restricciones: 0 <
wait_time_s<= 60Valor predeterminado: 0
on_error
Tipo:
Enum["error", "skip"]Descripción: Indicador de qué hacer con las instrucciones en caso de que esta instrucción falle:
"error": Detiene la ejecución de las instrucciones del navegador."skip": Continúa con la siguiente instrucción.
Valor predeterminado:
"error"
Ejemplo con argumentos generales
Instrucciones
hacer clic
Descripción: Hace clic en un elemento y espera una cantidad fija de segundos.
Argumentos:
tipo: cadena = "click"selector: diccionariotipo: Enum["xpath", "css", "text"]valor: cadena
Ejemplo:
input
Descripción: Introduce texto en un elemento seleccionado.
Argumentos:
tipo: cadena = "input"selector: diccionariotipo: Enum["xpath", "css", "text"]valor: cadena
valor: cadena
Ejemplo:
scroll
Descripción: Desplaza una cantidad determinada de píxeles.
Argumentos:
tipo: cadena = "scroll"x: enteroy: entero
Ejemplo:
scroll_to_bottom
Descripción: Desplaza hasta abajo durante una cantidad determinada de segundos.
Argumentos:
tipo: cadena = "scroll_to_bottom"
Ejemplo:
esperar
Descripción: Espera una cantidad determinada de segundos.
Argumentos:
tipo: cadena = "wait"
Ejemplo:
wait_for_element
Descripción: Espera a que el elemento cargue durante una cantidad determinada de segundos.
Argumentos:
tipo: cadena = "wait_for_element"selector: diccionariotipo: Enum["xpath", "css", "text"]valor: cadena
Ejemplo:
fetch_resource
La fetch_resource la instrucción debe ser la última instrucción en la lista de instrucciones del navegador; cualquier instrucción posterior no se ejecutará.
Descripción: Obtiene la primera ocurrencia de un recurso Fetch/XHR que coincida con el patrón establecido.
Argumentos:
tipo: cadena = "fetch_resource"filtro: cadena (expresión RegEx)on_error: Enum["error", "skip"]
Ejemplo:
Validación de instrucciones
Cualquier inconsistencia con respecto al formato de la instrucción dará como resultado un 400 código de estado y un mensaje de error correspondiente.
Por ejemplo, una carga útil como esta:
Dará como resultado:
Solución de problemas
Códigos de estado
Consulte nuestros códigos de respuesta descritos aquí. Los códigos de estado relacionados con la validación de instrucciones están documentados aquí.
Errores y advertencias
Si hay un error o advertencia resultado de tus acciones de navegación, lo encontrarás en el resultado bajo las claves browser_instructions_error o browser_instructions_warnings. Por ejemplo, si has enviado las siguientes instrucciones del navegador y el esperado xpath no se encuentra en la página, el resultado incluirá una advertencia.
browser_instructions:
Resultados:
Se produjo un error inesperado al convertir las instrucciones del navegador en acciones.
Se produjo un error inesperado al ejecutar {action.type} las instrucciones del navegador.
Acción {action.type} agotó el tiempo.
No se puede encontrar el tipo de selector {selector.type} con el valor {selector.value} en la página.
Última actualización
¿Te fue útil?

