Aprende sobre el encabezado que puedes incluir en tus solicitudes para obtener datos completamente renderizados, que puedes almacenar en un archivo HTML o como una captura PNG.
Si la página que desea rastrear requiere cargar JavaScript para cargar dinámicamente todos los datos necesarios en el DOM, en lugar de configurar y usar un navegador sin cabeza por su cuenta, puede incluir el "X-Oxylabs-Render: html" encabezado en sus solicitudes. Todas las solicitudes con este encabezado incluido se renderizarán completamente y todos los datos se almacenarán en un archivo HTML o en una captura de pantalla PNG (según el parámetro pasado).
El renderizado de JavaScript requiere más tiempo para rastrear la página. Al usar el renderizado de JavaScript, establezca el valor de tiempo de espera del cliente en 180 segundos.
Para garantizar el menor consumo de tráfico, nuestro sistema no carga recursos 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 pueden guardarse como PNG)
import requests# Use sus credenciales de Web Unblocker aquí.USERNAME,PASSWORD='YOUR_USERNAME','YOUR_PASSWORD'# Defina el dict de proxy.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,)# Imprimir la página resultante en stdoutprint(response.text)# Guardar el HTML devuelto en el archivo result.htmlwithopen('result.html','w')as f: f.write(response.text)
Rastrear el 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 Web Unblocker se usa sin renderizado de Javascript:
Ejemplo de página de Youtube sin renderizado de JavaScript
Agregando el "X-Oxylabs-Render: html" encabezado, como se muestra en los ejemplos a continuación, permitirá el renderizado de Javascript y devolverá un 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 totalmente renderizada
Para obtener una captura de pantalla en formato PNG en lugar del HTML de la página, se requiere 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 ejemplo a continuación:
Ejemplo de página de Youtube como captura de pantalla en formato PNG
Forzar el renderizado en páginas específicas
Para un rastreo exitoso, 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 no se establece explícitamente por el usuario.
Tenga en cuenta que los trabajos renderizados consumen más tráfico en comparación con los trabajos no renderizados.
Queremos que nuestros usuarios sean plenamente conscientes de esto al rastrear las siguientes páginas:
import requests
# Use sus credenciales de Web Unblocker aquí.
USERNAME, PASSWORD = 'YOUR_USERNAME', 'YOUR_PASSWORD'
# Defina el dict de proxy.
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,
)
# Imprimir la página resultante en stdout
print(response.text)
# Guardar el HTML devuelto en el archivo result.html
with open('result.html', 'w') as f:
f.write(response.text)