PHP: Goutte una librería para hacer web scraping

Goutte es una librería creada por Fabien Potencier a partir de varios componentes de Symfony y Guzzle. Esta librería nos permite navegar por páginas web a través de código, filtrar el contenido y extraer la información que necesitamos.

Vamos a ver cómo usar esta librería con un sencillo ejemplo y usaremos https://cpanel.net/demo/ que tiene una demo por la que podemos navegar. Lo que haremos será loguearnos en el cpanel y ver la configuración que tiene de PHP.

El primer paso será, como ya vimos, crearse un proyecto incluyendo Goutte. Se puede incluir en el composer.json como librería en el require o si nos bajamos el fichero phar se puede incluir como fichero en el autoload.

Bajamos los vendors:

Y ya tenemos la librería lista para usar. Creamos un fichero app.php y añadiremos el require correspondiente:

La primer parte será conectarnos con la página web. Podríamos acceder a https://cpanel.net/demo/ y de ahí a uno de los cpanel de demo, pero vamos a ir a la url de login directamente porque en enlace que hay en la página ya va con usuario y contraseña y se loguea automáticamente. Por lo que accedemos a http://x3demob.cpx3demo.com:2082/login/ con el usuario x3demob y contraseña x3demob:

En este punto en $crawler tenemos la página principal después de loguearse, ahora vamos a hacer click en el enlace de PHP Configuration y sacaremos de ahí los datos para imprimirlos por consola:

Y esto tendrá como salida:

A partir de aquí podríamos extender esto hasta donde queramos, por ejemplo podemos añadir la librería SwiftMailer para mandar correos cuando detectemos algo o crear un comando de Symfony al que le pasemos parámetros o cualquier cosa que se nos ocurra.

Dejo el código final todo junto (Gist):