Webscrapping, extrayendo datos de la red.

webscrapping

 

Como programador, en algún momento habrás necesitado acceder alguna fuente de datos pública sin poder utilizar sus propias APIs.

Con PHP podemos extraer información de una web, aunque tambien se puede hacer de otras maneras que, aún siendo más eficaces, son bastante más complicadas de programar y requiere de altos conocimientos.

Yo, como dice el título de mi blog, prefiero hacerlo programando a mi manera.

Empecemos, ¿Qué es el WEB SCRAPPING?

El web scraping es una técnica que permite leer el contenido de un sitio web mediante un código o programa con la finalidad de extraer datos.
Entre los usos más comunes encontramos recolección de datos, comparación de precios, simulación de navegación, testing, etc.
 
El uso del web scraping es controvertido, debido a que muchas veces puede violar los términos y condiciones . Asegurate antes que el contenido que buscas sea público.
 
En esta entrada, voy a ofreceros un código con el que podreis extraer datos de empresas desde la página web de Páginas Amarillas. Es una herramienta que yo he utilizado bastante para proyectos personales y ahora lo pongo a vuestra disposición. Espero que os sirva.
 
Empecemos.

Funcionamiento del Scraper de Páginas Amarillas (PA)

El funcionamiento es simple aunque el desarrollo el algo confuso. Al final de esta entrada te pondré el código entero y podrás verlo en funcionamiento.

Vamos a empezar haciendo nuestra primera consulta, por ejemplo «dentistas en Castellón».

En este caso, nos ofrece 91 resultados.

Capturamos esta información desde nuestro formulario, al que hemos de añadir el LINK  de la consulta que hemos realizado en PA, que sería el siguiente:

Recibimos esta información y con éste sencillo código…

…contamos el total de resultados (ya hemos dicho que en este caso son 91), lo dividimos entre 30, que son los  resultados a mostrar por página y lo redondeamos hacia arriba por si hay menos de 30 resultados.

Extraer datos.

Ésta es la función más importante del programa, ya que se encarga de buscar en los resultados la información que queremos extraer. El funcionamiento es muy simple, le damos la cadena ($cadena) que hemos extradido y le decimos DESDE DONDE ($inicio) y HASTA DONDE ($fin)  queremos que nos busque la información.

Ésta función la utilizaremos cada vez que queramos un dato.

Mostrar tabla de resultados

Ahora que ya sabemos cuántas páginas de resultados tenemos, procederemos a extraer toda la información que necesitamos. Para esto, utilizaremos la segunda funcion que hemos llamado mostrarTabla();

En el inicio tenemos este código…

…que nos devuelve un array con todas las empresas que se muestran en cada una de las páginas.

Ahora ya podemos empezar a recorrer dicho array con un simple foreach;

Y una vez llegues aquí, sólo te queda utilizar tus conocimientos para mostrar la información como necesites. Puedes generar una simple tabla, guardarlos en una base de datos o generar un archivo para conservarlos o enviarlos.

Seguramente, en función de la página de donde extraigas la información, necesitarás modificar el código para adaptarlo a la web que estás «scrapeando».

Espero que esta pequeña aportación te sea de utilidad. Aquí te dejo el código completo que yo he adaptado para mí  y un link para que puedas probarlo.

DEMOSTRACIÓN FUNCIONAMIENTO

 

Compartir esta entrada.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

CAPTCHA ImageChange Image