Aprende sobre el encabezado que puedes incluir en tus solicitudes para obtener datos completamente renderizados, que puedes guardar en un archivo HTML o como una captura de pantalla PNG.
Si la página que deseas extraer requiere cargar JavaScript para cargar dinámicamente todos los datos necesarios en el DOM, en lugar de configurar y usar por tu cuenta un Headless Browser, puedes incluir el "X-Oxylabs-Render: html" encabezado en tus solicitudes. Todas las solicitudes con este encabezado incluido se renderizarán por completo, y todos los datos se almacenarán en un archivo HTML o en una captura de pantalla PNG (según el parámetro pasado).
La renderización de JavaScript tarda más en extraer la página. Al usar renderización de JavaScript, establece el valor del tiempo de espera del lado cliente en 180 segundos.
Para garantizar el menor consumo de tráfico, nuestro sistema no carga activos innecesarios durante el renderizado de la página.
Este parámetro tiene dos valores disponibles:
html (HTML de una página renderizada)
png (bytes sin procesar que se pueden guardar como PNG)
import requests# Usa aquí tus credenciales de Web Unblocker.USERNAME,PASSWORD='YOUR_USERNAME','YOUR_PASSWORD'# Define el diccionario de proxies.proxies ={'http':f'http://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000','https':f'https://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000',}headers ={'X-Oxylabs-Render':'html'}response = requests.get('https://ip.oxylabs.io/location',verify=False,# Es necesario ignorar el certificadoproxies=proxies,headers=headers,)# Imprime la página de resultados en stdoutprint(response.text)# Guarda el HTML devuelto en el archivo result.htmlwithopen('result.html','w')as f: f.write(response.text)
Extracción del HTML de un sitio web
En este ejemplo, renderizaremos la página de inicio de YouTube y extraeremos el contenido de la página. Normalmente, la página de inicio de Youtube se vería así si se usa Web Unblocker sin renderización de Javascript:
Ejemplo de página de Youtube sin renderización de JavaScript
Añadir el "X-Oxylabs-Render: html" encabezado, como se muestra en los ejemplos de abajo, habilitará la renderización de Javascript y devolverá el HTML de una página renderizada:
El archivo HTML abierto en un navegador debería verse así:
Obtener una captura de pantalla de una página completamente renderizada
Para obtener una captura de pantalla en formato PNG en lugar del HTML de la página, es necesario proporcionar el "X-Oxylabs-Render: png" encabezado.
La respuesta contendrá bytes sin procesar de una imagen que se puede guardar en formato PNG y abrir como en el siguiente ejemplo:
Ejemplo de página de Youtube como captura de pantalla en formato PNG
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. Nuestro sistema aplica automáticamente el renderizado para estas páginas, incluso si el usuario no lo establece explícitamente.
Tenga en cuenta que los trabajos renderizados consumen más tráfico que los trabajos no renderizados.
Queremos que nuestros usuarios sean plenamente conscientes de esto al extraer las siguientes páginas:
import requests
# Usa aquí tus credenciales de Web Unblocker.
USERNAME, PASSWORD = 'YOUR_USERNAME', 'YOUR_PASSWORD'
# Define el diccionario de proxies.
proxies = {
'http': f'http://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000',
'https': f'https://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000',
}
headers = {
'X-Oxylabs-Render': 'html'
}
response = requests.get(
'https://youtube.com',
verify=False, # Es necesario ignorar el certificado
proxies=proxies,
headers=headers,
)
# Imprime la página de resultados en stdout
print(response.text)
# Guarda el HTML devuelto en el archivo result.html
with open('result.html', 'w') as f:
f.write(response.text)