2020-11-14

Hacer foto de una web con python desde consola

A veces nos resulta necesario hacer una comprobación visual y automática del estado de una página web.

Se puede hacer de muchas maneras. En este ejemplo, vamos a usar la consola de linux. En mi caso, un ubuntu sin entorno gráfico puesto.

Necesitamos instalar Selenium y el chrome driver. Juntos nos proporcionan una forma muy rápida y eficaz de hacer estas fotos.

Instalamos Selenium. Un software que nos puede valer para testear nuestros proyectos web.

pip install -U selenium


Ahora instalamos el chrome driver que básicamente es un navegador desde el cual se hace la foto. Nos renderiza la url que le enviemos.

sudo apt-get install chromium-chromedriver
 
Creamos el fichero makeImg.py con este código:
 
#coding=utf-8                                                                                      >
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)

URL = 'https://avanzaweb.net'

driver.get(URL)

S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
driver.set_window_size(S('Width'),S('Height')) # May need manual adjustment >
driver.find_element_by_tag_name('body').screenshot('avanzaweb.png')

driver.quit() 
 
 
Cambiando avanzaweb por la url y nombre de imagen de vuestro agrado tenemos la imagen generada justo en la carpeta de ejecución del script.

Más sencillo imposible.