Antes de seguir navegando, pincha aquí si quieres aceptar el uso de cookies y cerrar este mensaje.

Volver al inicio
Windows Internet Ofimática Smartphones Linux / Mac Ciberseguridad
Mostrar/Ocultar Menú
Windows Internet Ofimática Smartphones Linux / Mac Ciberseguridad

Como hacer web scraping con PHP

En este tutorial vamos a ver de forma sencilla como hacer web-scraping, es decir, como obtener información de ciertas páginas web de forma automática.

Para comenzar el tutorial, se asumen unos conocimienots básicos de HTML y PHP

Como primer ejemplo, vamos a tomar la siguiente web en la que se muestran las estadisticas sobre el COVID-19:

web a scrapear

En este caso vamos a recuperar 3 datos sobre España: infectados, recuperados y fallecidos:

Lo primero que tenemos que hacer es iniciar el objeto curl y darle la URL que vamos a scrapear, el User-Agent con el que nos vamos a presentar, y indicarle que devuelva a una variable el contenido de la página.

Lanzamos la peticón guardando el contenido de la página a scrapear en la variable $html y cerramos la conexión

Ahora, lo que haremos es instanciar la clase DomDocument y pasarle el HTML que hemos obtenido en la petición anterior, de esta forma se montará toda la estructura de elementos de la página con sus respectivos atributos y podremos empezar a acceder a ellos

Siguiendo con el ejemplo del COVID, si miramos el código fuente de la página que estamos scrapeando, veremos que la tabla que contiene los datos tiene en este caso el ID main_table_countries_today , por lo tanto lo que tenemos que hacer es utilizar el método getElementById para recuperar la tabla y a continuación getElementByTagName para obtener las filas que contenga

Ahora, como la fila que nos interesa no tiene ningún atributo que nos permita identificarla, lo que tendrmeos que hacer es recorrerlas todas y detectar cuál nos interesa por su contenido, para hacer esto lo que vamos a hacer es un bucle que obtendrá las celdas de cada fila, y utilizando el método nodeValue , se comprobará si la primera fila de la columna contiene el texto Spain y si es así guardará en 3 variables distintas los textos de las columnas de esa misma fila en las que se encuentran los datos que queremos

Una vez tengamos montado el script para obtener los datos que nos interesen, si necesitamos que esa extracción se haga automáticamente por ejemplo cada hora, tenemos 2 opciones, si estmaos trabajando en un VPS podemos poner una tarea programada con cron , pero si estamos trabajando con un hosting, o bien miramos en el panel de control si nos da alguna opción para configurar la ejecución programada, o sino podemos utilizar la web cron-jobs.org en la que podremos programar esas ejecuciones.

Además de los métodos utilizados, existen algunos otros que pueden ser útiles, en el siguiente enlace tenemos la documentación oficial de PHP

Documentación PHP DomDocument

Si quieres resolver cualquier consulta y/o recibir notificaciones sobre los nuevos contenidos que se van a ir subiendo, puedes unirte a nuestro grupo de Telegram