[PowerBi] Extraer datos de sitios Web (Scrapping)

Hoy en día no es sencillo que toda nuestro conjunto de datos provenga de una sola fuente de tecnología o fuente de información (cliente, usuario final, etc). La realidad es que para enriquecer una análisis y poder llevar al máximo nuestras decisiones y analítica, debemos nutrirnos de fuentes externas.

En este post vamos en enfocarnos en algo conocido como Web Scrapping. No voy a ponerme explicar todo de cero. Básicamente lo que vamos a hacer es recolectar información semi estructurada de un sitio web para estructurarla en nuestro power bi. Tal vez estamos viendo algo interesante sobre información demográfica y nos vendría bien conocer la población del país/provincia que trabajamos para comprender mejor algunas proporciones y porcentajes en un mapa. Seguramente dichos datos no los tenemos a mano, sino que tenemos que escrapearlos de la web.

Cabe destacar que no solo porque lo veamos al dato en la web significa que vamos a poder tomarlo sencillamente con Power Bi. Algunos serán más fácil que otros dependiendo que tan estructurados sean y otros pueden ser realmente complejos y hasta imposible de tomarlos desde Power Bi (para tal caso podemos irnos a un lenguaje de desarrollo como python que está integrado, pero no viene al caso de nuestro artículo).

Este post contendrá la definición práctica de como usar los métodos sin detallar la explicación del código Power Query M.

Existen dos modos de leer datos de la web para Power Bi. Ambos métodos utilizarán el conector Web que ya conocemos y a partir de cierta configuración se comportará de modo diferente.

Para diferenciar los comportamientos vamos a ir a las opciones mejor conocidas como Preview Features en:

Archivo / Opciones y Configuración / Opciones / Características de versión preliminar

image

Web - Tabla Html (opción desactivada)

Cuando nos conectamos a un sitio web con el conector web, valga la redundancia lo que el motor intentará realizar es buscar en su contenido HTML algún componente con el tag <table> que leer. En el ejemplo tomaremos datos del último censo Argentino de wikipedia.

https://es.wikipedia.org/wiki/Censo_argentino_de_2010

image

Como éste es un enlace público, nuestra credencial de acceso será Anónima. En caso de encontrarlo, el motor nos mostrará los nombres del componente table en html y sugerencias de otras tablas tagueadas sin nombre que podemos leer:

image

Por nuestra parte vamos a leer Población y damos "Cargar". 

Listo, ya disponemos de datos de un sitio web que tenía una tabla en su contenido.

Web - a partir de ejemplos  (opción activada)

Existen casos que vamos a ver la tabla en el sitio web pero cuando intentamos leerla con la opción anterior el motor no reconoce las tablas sencillamente y nos muestra los atributos del componente web. Resulta que hay muchos frameworks y desarrollos css que permitirán hacer contenidos visuales que, si bien parecen tablas a simple vista, no lo son. ¿Qué quiero decir con que no son una tabla si la estamos viendo? significa que en su código html no dispone de un tag <table>. Cuando esto sucede tenemos la posibilidad de sugerirle ejemplos al motor de Power Bi para ayudarlo a interpretar nuestro resultado.

Para este ejemplo vamos a comparar juegos de la tienda de xbox:

https://www.xbox-now.com/en/game-comparison

image

Si conectamos esta URL con el conector Web y la opción mencionada antes activada. Podrán apreciar que ninguna de las sugerencias del motor nos serían de utilidad para leer los datos deseados. Ésta opción añade un botón abajo para leer a partir de ejemplos:

image

Ese botón nos cambiaría la ventana actual a una que tendrá una vista previa del sitio (que no funciona muy bien, pueden guiarse abriéndolo en un navegador) y una tabla vacía como la que aparece cuando tocamos Especificar Datos en Power Bi.

Conociendo el sitio. Mi interés estaba en saber el nombre del juego y su precio en la tienda de USA y la de Argentina. Para ello complete los campos en los recuadros y el motor supo resolver el resto.

image

Podríamos decir que Power Bi nos ayudaría con un smart scrapping para reconocer lo que necesitamos e incluso ir sugiriendo a medida que escribimos para ver si el código del sitio sigue un patrón que nos ayude a estructurar estos datos. Damos aceptar y nos aparecerá una nueva tabla entre las sugerencias previas de Power Bi. Podemos seleccionarla y cargarla.

Así hemos concluido nuestra dosis de extracción de datos de una web para poder llevarlos a nuestros análisis más profundos. Recuerden que no cualquier web puede ser leía automáticamente con Power Bi. Dependerá de su construcción y complejidad, pero esto puede ampliarnos de gran manera el panorama.