For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

valor de render
Obtienes

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

Si quieres extraer una imagen y descargarla, consulta esta sección.

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())

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.

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.

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: entero

  • Descripción: Cuánto tiempo hasta que se omita la acción si no se completa a tiempo.

  • Restricciones: 0 < timeout_s <= 60

  • Valor predeterminado: 5

wait_time_s

  • Tipo: entero

  • Descripción: Cuánto esperar antes de ejecutar la siguiente acción.

  • Restricciones: 0 < wait_time_s <= 60

  • Valor 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: diccionario

      • tipo: Enum["xpath", "css", "text"]

      • valor: cadena

Ejemplo:

input

  • Descripción: Introduce texto en un elemento seleccionado.

  • Argumentos:

    • tipo: cadena = "input"

    • selector: diccionario

      • tipo: Enum["xpath", "css", "text"]

      • valor: cadena

    • valor: cadena

Ejemplo:

scroll

  • Descripción: Desplaza una cantidad determinada de píxeles.

  • Argumentos:

    • tipo: cadena = "scroll"

    • x: entero

    • y: 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: diccionario

      • tipo: Enum["xpath", "css", "text"]

      • valor: cadena

Ejemplo:

fetch_resource

  • 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:

Posibles errores y advertencias

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?