En este artículo describimos los pasos necesarios para extraer los datos de una página web. Se explicará también como extraer y cruzar datos de varias web usando los llamados parámetros y funciones.

Haremos un ejemplo práctico en Power BI que podrás bajarte y modificar a tu gusto.

El proceso se describirá en tres fases:

  • Extraer datos de una web de ejemplo.
  • Crear una Table con Power Query.
  • Crear un parámetro y función para extraer datos de múltiples URLs.

Extraer datos de una sóla Web de ejemplo

Para empezar buscaremos una web de ejemplo de la cual extraer los datos, cualquiera la podemos utilizar como ejemplo. Voy a utilizar la siguiente URL http://www.zondeal.com/2019/10/19/como-saber-la-historia-de-facebook-con-power-query/

De esta URL vamos a importar las siguientes columnas: Título, Contenido, Posted By, Posted On, Categorías, etc…

Paso a paso.

Paso 1 :

Abre Power BI Desktop, después Get Data y click en Web como muestra la figura.

Get Data Power BI Desktop

Paso 2. Introduce la URL en la caja. Como no es necesario logarse en mi web, selecciona la opción Basic y click en OK.

Extraer datos de Web

Paso 3: En la parte izquierda de la ventana de navegacón que aparece, vemos un apartado llamado Document debajo de Display Options. Al hacer click en Document vemos que aparecen en la ventana de la derecha cuatro columnas Kind, Name, Children y Text..

Add table using examples

Paso 4:

Al hacer click en «Add table using examples», obtenemos dos secciones, la de arriba es un preview de la web y la de abajo tiene una columna nombrada con el nombre Column1, el contenido puede tardar un poco dependiendo de la conexión a internet y del volumen de la web. Puedas hacer Scroll sobre la primera sección para incluir en la segunda sección lo que quieras.

Paso 5: Haz click en la primera celda de la columna Column1

Paso 6: Pinchamos en la parte gris y buscamos el nombre de la web entre los textos que aparecen.

Paso 7: En este paso al hacer click sobre el asterisco al lado de Column1 se añade una nueva Columna llamada Columna2.

Paso 8: Introduce el autor del artículo en la Columna2

Paso9: De nuevo al hacer click en el asterisco de la derecha aparecerá una nueva columna llamada Column3.

Paso 10: Introduce la fecha como Julio y observa el error que aparece.

Este error siginifica que el CSS no es capaz de encontrar el texto que has introducido por lo que hay que meter una fecha correcta que nos proporciona automáticamente la herramienta, el error se corrige.

Paso 11: Introduce el resto de la columnas de la misma forma que hemos hecho anteiormente, Categoría, Comments y Content.

Después de introducir los nombres de las columnas según tus preferencias haz click er OK y obtnenemos la siguiente pantalla, no te olvides de hacer click en Table 1.

Comprueba que todas las cosas están OK y click en Load.

Vamos a avanzar un poco más obteniendo los datos de una lista de webs a través de las URLs de cada una de ellas. Las lista de URLs que vamos a utilizar es la siguiente, todas relacionadas con Power BI:

https://radacad.com/ai-builder-power-apps-embed-with-ai-part-1

https://radacad.com/ai-builder-ai-embebed-in-power-apps-part-2

https://radacad.com/power-bi-shared-datasets-what-is-it-how-does-it-work-and-why-should-you-care

https://radacad.com/automated-machine-learning-data-profiling-in-azure-ml-services-part-4

https://radacad.com/azure-machine-learning-services-deploy-automl-model-and-use-it-in-power-bi-part3

https://radacad.com/budget-vs-actual-zero-complexity-model-in-power-bi

Para continuar con el ejemplo, todas estas Urls las vamos a mete r en una tabla dentro de Power BI, para hacer esto, hacemos click en el botón «Enter Data» del editor de Power Query como vemos abajo.

Renombra, la columna a URL y renombra la tabla a URLs.

A continuación, vamos a crear un parámetro y una función para recorrer la tabla de URLs de forma dinámica. Haz click en «Manage Parameters – New Parameter» del Ribbon de Power Query.

En la pantalla que se muestra cambia el nombre del parámetro a «myblogurl», cambia el campo Type a Text y en Current Value añade la web por defecto siguiente, https://radacad.com/ai-builder-ai-embedded-in-power-apps-part-2

Esto nos crea un parámetro, el cual aparecerá en la siguiente sección.

El siguiente paso que tenemos que hacer es crear una función, para ello seguimos los siguientes pasos:

Paso 1.- En el editor de Power Query, click en el primer paso nombrado Base Query y después haz click en «Advance Editor». Dentro se puede ver la URL de la página que hemos añadido al principio del presente artículo.

Ahora hay que reemplazar la URL incluyendo las comillas por el nombre del parámetro que hemos creado. Asegúrate que no hay errores de sintaxis cuando reemplacemos la URL con el nombre del parámetro.

El siguiente paso consiste en crear una función que se va a invocar con el parámetro creado, botón derecho sobre «Base Query» y click en «Create Function».

Al hacer click en «Create Function» obtenemos un pop up, el cual nos permite dar un nombre a la función que queremos invocar, «fnmyblogurl»

Power Query function

La función de Power Query que se crea debe tener el siguiente aspecto:

Puedes comprobar la función, copiando la URL https://radacad.com/ai-builder-ai-embedded-in-power-apps-part-2 en el textbox y clicking en invoke.

Debería aparecer algo como esto:

Invoke function with power bi
Power BI function

Una vez creada la función y probada, nos queda obtener los datos de múltiples URLs.

Obtener datos de muchas Webs

Para obtener datos de muchas URLs, haz click en la tabla que creamos de URLs.

Power bi URLs

Después usamos la función creada para crear una nueva columna que contenga los datos para las URLs en la columna URL. Esto se hace en el ribbon «Add Column» y después click en «Invoke Custom Function».

El siguiente cuadro de diálogo que aparece es el siguiente:

Cambia el nombre de columna a blogdetails, selecciona la función que aparece en el desplegable, fnmyblogurl, en la lista desplegable «myblogurl» selecciona el campo URL de la tabla de URLs, en la mayoría de los casos el campo ya viene seleccionado, Click OK, ahora tenemos un nuevo campo en la tabla URLs.

Como se puede ver aparece un link el cual al pinchar expande los datos de las URLs.

Y aparece el siguiente cuadro de diálogo:

Recuerda que tiene que estar chequeado «Use original column name as prefix». Una vez hecho esto la tabla se rellena con todas las columnas de las URLs del campo especificado en la función.

Algunas partes de los campos están en blanco por lo que habrá que rellenar estos valores para empezar a tratarlos. Esto es todo ya tenemos una forma de crear y leer de forma dinámica URLs a través de una función y un parámetro.