Morello
ODUM
- Desde
- 24 Jul 2019
- Mensajes
- 2.345
Extraer precios desde web con Power Bi
Amigos de la oscuridad, les traigo un mini tutorial para realizar web scarpping para quienes no sabemos de programación y tenemos hobbies caros como la fotografía, ciclismo, audio y reventa.
La finalidad es extraer los datos en un CVS, el análisis de estos quedará para más adelante.
Se necesita tener instalado Power Bi Desktop (versión gratuita). Enlace: https://powerbi.microsoft.com/es-es/get-started/
Nota: También es posible con versiones recientes de Excel con el módulo power query (Ofice 365)
1. Generar conexión a web
El programa permite realizar conexiones a múltiples fuentes (BD, CRM y ERP), entre ellas la conexión a sitios web, en nuestro caso con la opción “adherir tabla usando ejemplos”, la cual debe ser realizado al menos una vez por cada sitio web. También es posible realizar una función y entregar una lista de url , pero va más allá del alcance de este tutorial.
Como la explicación es latera dejaré un par de videos donde ver el paso a paso.
https://www.youtube.com/watch?v=JHDYi4r5NtI&list=PLFB5zgNNuf1ZXP0JgBFUbZQsOIdUgW_7D&index=3&t=0s
importante min 2.49
https://www.youtube.com/watch?v=qztZ1hLo_Gw&list=PLFB5zgNNuf1ZXP0JgBFUbZQsOIdUgW_7D&index=6
importante min 2.50
nota: es una buena práctica realizar unos 3 o cuatro ejemplos por columna, ya que a veces el programa se confunde.
2. Ejemplo Televisores Falabella
A modo de ejemplo utilizaré la siguiente url : https://www.falabella.com/falabella-cl/category/cat2850014/LED
seleccionamos el origen de datos como web e insertamos la url
En la siguiente ventana seleccionamos “adherir tabla usando ejemplos”
Agregamos los campos que nos interesen según los videos anteriores, en este caso marca, producto y precio. Este paso puede variar según página e información a recolectar. Una vez conformes damos en “Ok”.
Aquí debemos decidir entre de cargar la información en bruto o realizar la limpieza de datos utilizando las opciones del programa (altamente recomendado) evitándonos posteriores complicaciones. Para fines didácticos daremos click en “Editar”.
3. Limpieza datos
Se abrirá el “Editor de Power Query” , donde veremos una tabla con datos sin procesar, Quienes estén familiarizados con los procesos de ETL estarán cagados de la risa, para los demás podría decirles que es muy similar a Excel pero sin la necesidad de utilizar funciones como extraer, buscar, left, etc. Ya que están integradas en la cinta de opciones.
Seleccionando la columna “precio”, realizaré 3 operaciones en la pestaña “Transformar”, en “extraer después de delimitador” en este caso ingresaré un espacio, luego “extraer antes de delimitador”e ingresaré un paréntesis. En este punto es posible transformar la columna en “Numero Entero” ya que antes solo era aceptada como texto.
Transformar>Columna texto>Extraer> extraer después de delimitador = “ “
Transformar>Columna texto>Extraer> extraer antes de delimitador = “(“
Transformar>Cualquier columna > Tipo dato = numero entero
Para continuar Archivo > cerrar y cargar.
Ahora en volveos al menú inicial recomiendo agregar la fecha con una función today(), tal como Excel.
Pestaña Datos>Modelado> Nueva Columna > fecha = today ( )
Además en la misma pestaña se le puede cambiar el formato de la columna “precio” a moneda
Pestaña Datos>Modelado> Formato> tipo de dato = numero entero > formato = moneda.
4. Exportar CVS
A esta altura ya estamos casi listos, realizadas las trasformaciones de datos que crean necesarias, ya podemos extraer la información en un archivo separado por comas.
En la pestaña de Reporte agregaremos una visualización de tabla o matriz y seleccionaremos los campos que deseamos exportar, símil a una tabla dinámica de Excel.
En la visualización hacemos click los 3 puntos de la derecha y nos aparecerá la opción de exportar, la siguiente ventana seleccionaremos nombre y ubicación.
reservado
reservado 2
5. Actualizar datos.
En este punto obtendremos una plantilla para obtener los precios, para actualizar los datos debemos estar ubicados en la pestaña “Home” u “Inicio” y simplemente damos click en actualizar.
Volemos al punto anterior y exportamos, así sucesivamente.
6. Obtener Código M
Una vez que tenemos nuestra plantilla funcionando, podemos rescatar el código que fue generado por el programa. Microsoft lo llama Código M.
Aquí se almacenó la Url, campos seleccionados, cambios de formato, transformaciones de texto.
todo lo anterior puede ser modificado, que es lo que necesitaremos para extraer más páginas del mimo retail.
Inicio>Datos externos > Editor de Consultas > Editor avanzado
7. Blank query
Con el código que obtuvimos en el paso anterior, editamos solo la primer línea 'Source =' con la siguiente url que deseamos extraer , en este ejemplo la segunda página con televisores y así sucesivamente.
https://www.falabella.com/falabella-cl/category/cat2850014/LED?gridView=6&page=2
Probablemente con solo cambiar la url podamos extraer la información de todo el sitio.
Inicio> Datos externos>Obtener datos > Consulta en blanco >Editor avanzado
Nota: Recuerden darle nombre a la nueva tabla
8. Comparte tu código
Finalmente, como podemos publicar el código utilizado en las diferentes tiendas del retail y obtener una base con productos más específicos que knasta.
let
Source = Web.BrowserContents('https://www.falabella.com/falabella-cl/category/cat2850014/LED'),
#'Extracted Table From Html' = Html.Table(Source, {{'marca ', '.section__pod-top-brand'}, {'producto', '.section__pod-top-title'}, {'precio web', '.fb-price:nth-child(1)'}}, [RowSelector='.pod-item']),
#'Changed Type' = Table.TransformColumnTypes(#'Extracted Table From Html',{{'marca ', type text}, {'producto', type text}, {'precio web', type text}}),
#'Extracted Text After Delimiter' = Table.TransformColumns(#'Changed Type', {{'precio web', each Text.AfterDelimiter(_, ' '), type text}}),
#'Extracted Text Before Delimiter' = Table.TransformColumns(#'Extracted Text After Delimiter', {{'precio web', each Text.BeforeDelimiter(_, '('), type text}}),
#'Changed Type1' = Table.TransformColumnTypes(#'Extracted Text Before Delimiter',{{'precio web', Int64.Type}})
in
#'Changed Type1'
Fin.
:tiburonvolador
Amigos de la oscuridad, les traigo un mini tutorial para realizar web scarpping para quienes no sabemos de programación y tenemos hobbies caros como la fotografía, ciclismo, audio y reventa.
La finalidad es extraer los datos en un CVS, el análisis de estos quedará para más adelante.
Se necesita tener instalado Power Bi Desktop (versión gratuita). Enlace: https://powerbi.microsoft.com/es-es/get-started/
Nota: También es posible con versiones recientes de Excel con el módulo power query (Ofice 365)
1. Generar conexión a web
El programa permite realizar conexiones a múltiples fuentes (BD, CRM y ERP), entre ellas la conexión a sitios web, en nuestro caso con la opción “adherir tabla usando ejemplos”, la cual debe ser realizado al menos una vez por cada sitio web. También es posible realizar una función y entregar una lista de url , pero va más allá del alcance de este tutorial.
Como la explicación es latera dejaré un par de videos donde ver el paso a paso.
https://www.youtube.com/watch?v=JHDYi4r5NtI&list=PLFB5zgNNuf1ZXP0JgBFUbZQsOIdUgW_7D&index=3&t=0s
importante min 2.49
https://www.youtube.com/watch?v=qztZ1hLo_Gw&list=PLFB5zgNNuf1ZXP0JgBFUbZQsOIdUgW_7D&index=6
importante min 2.50
nota: es una buena práctica realizar unos 3 o cuatro ejemplos por columna, ya que a veces el programa se confunde.
2. Ejemplo Televisores Falabella
A modo de ejemplo utilizaré la siguiente url : https://www.falabella.com/falabella-cl/category/cat2850014/LED
seleccionamos el origen de datos como web e insertamos la url
En la siguiente ventana seleccionamos “adherir tabla usando ejemplos”
Agregamos los campos que nos interesen según los videos anteriores, en este caso marca, producto y precio. Este paso puede variar según página e información a recolectar. Una vez conformes damos en “Ok”.
Aquí debemos decidir entre de cargar la información en bruto o realizar la limpieza de datos utilizando las opciones del programa (altamente recomendado) evitándonos posteriores complicaciones. Para fines didácticos daremos click en “Editar”.
3. Limpieza datos
Se abrirá el “Editor de Power Query” , donde veremos una tabla con datos sin procesar, Quienes estén familiarizados con los procesos de ETL estarán cagados de la risa, para los demás podría decirles que es muy similar a Excel pero sin la necesidad de utilizar funciones como extraer, buscar, left, etc. Ya que están integradas en la cinta de opciones.
Seleccionando la columna “precio”, realizaré 3 operaciones en la pestaña “Transformar”, en “extraer después de delimitador” en este caso ingresaré un espacio, luego “extraer antes de delimitador”e ingresaré un paréntesis. En este punto es posible transformar la columna en “Numero Entero” ya que antes solo era aceptada como texto.
Transformar>Columna texto>Extraer> extraer después de delimitador = “ “
Transformar>Columna texto>Extraer> extraer antes de delimitador = “(“
Transformar>Cualquier columna > Tipo dato = numero entero
Para continuar Archivo > cerrar y cargar.
Ahora en volveos al menú inicial recomiendo agregar la fecha con una función today(), tal como Excel.
Pestaña Datos>Modelado> Nueva Columna > fecha = today ( )
Además en la misma pestaña se le puede cambiar el formato de la columna “precio” a moneda
Pestaña Datos>Modelado> Formato> tipo de dato = numero entero > formato = moneda.
4. Exportar CVS
A esta altura ya estamos casi listos, realizadas las trasformaciones de datos que crean necesarias, ya podemos extraer la información en un archivo separado por comas.
En la pestaña de Reporte agregaremos una visualización de tabla o matriz y seleccionaremos los campos que deseamos exportar, símil a una tabla dinámica de Excel.
En la visualización hacemos click los 3 puntos de la derecha y nos aparecerá la opción de exportar, la siguiente ventana seleccionaremos nombre y ubicación.
reservado
reservado 2
5. Actualizar datos.
En este punto obtendremos una plantilla para obtener los precios, para actualizar los datos debemos estar ubicados en la pestaña “Home” u “Inicio” y simplemente damos click en actualizar.
Volemos al punto anterior y exportamos, así sucesivamente.
6. Obtener Código M
Una vez que tenemos nuestra plantilla funcionando, podemos rescatar el código que fue generado por el programa. Microsoft lo llama Código M.
Aquí se almacenó la Url, campos seleccionados, cambios de formato, transformaciones de texto.
todo lo anterior puede ser modificado, que es lo que necesitaremos para extraer más páginas del mimo retail.
Inicio>Datos externos > Editor de Consultas > Editor avanzado
7. Blank query
Con el código que obtuvimos en el paso anterior, editamos solo la primer línea 'Source =' con la siguiente url que deseamos extraer , en este ejemplo la segunda página con televisores y así sucesivamente.
https://www.falabella.com/falabella-cl/category/cat2850014/LED?gridView=6&page=2
Probablemente con solo cambiar la url podamos extraer la información de todo el sitio.
Inicio> Datos externos>Obtener datos > Consulta en blanco >Editor avanzado
Nota: Recuerden darle nombre a la nueva tabla
8. Comparte tu código
Finalmente, como podemos publicar el código utilizado en las diferentes tiendas del retail y obtener una base con productos más específicos que knasta.
let
Source = Web.BrowserContents('https://www.falabella.com/falabella-cl/category/cat2850014/LED'),
#'Extracted Table From Html' = Html.Table(Source, {{'marca ', '.section__pod-top-brand'}, {'producto', '.section__pod-top-title'}, {'precio web', '.fb-price:nth-child(1)'}}, [RowSelector='.pod-item']),
#'Changed Type' = Table.TransformColumnTypes(#'Extracted Table From Html',{{'marca ', type text}, {'producto', type text}, {'precio web', type text}}),
#'Extracted Text After Delimiter' = Table.TransformColumns(#'Changed Type', {{'precio web', each Text.AfterDelimiter(_, ' '), type text}}),
#'Extracted Text Before Delimiter' = Table.TransformColumns(#'Extracted Text After Delimiter', {{'precio web', each Text.BeforeDelimiter(_, '('), type text}}),
#'Changed Type1' = Table.TransformColumnTypes(#'Extracted Text Before Delimiter',{{'precio web', Int64.Type}})
in
#'Changed Type1'
Fin.
:tiburonvolador