[Mini Tutorial] Extraer precios desde web con Power Bi

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
scy8uxk.png

En la siguiente ventana seleccionamos “adherir tabla usando ejemplos”
KvYMfZx.png

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”.
OXwezNJ.png

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”.
BcsrxBk.png

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.
rfjbqIC.png

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.
94dehNu.png

i8CejUo.png

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.
y2uV1J3.png

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.
qygXUmp.png

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.
c2998k0.png



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.
lUz31UW.png

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
MdpmuBZ.png

Asm9xmm.png

PXOmz0P.png

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
XICXOA4.png

zDSx4qI.png

pXmSei3.png

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
 

SebaRG

Baneado
Desde
25 Jul 2019
Mensajes
2.750
Muy buena información mañana en la pega lo leeré mas atentamente para tratar de realizarlo.
Enviado desde mi iPhone utilizando Tapatalk
 

Morello

ODUM
Desde
24 Jul 2019
Mensajes
2.345
algun mod puede cambiar el título a [Mini Tutorial] Extraer precios desde web con Power Bi
no puedo por el numero de imágenes (10 por mensaje), lo subí en 2 tandas y se me bugea
 

gatofelixcc

Donador
ODUM
Desde
26 Jul 2019
Mensajes
1.748
Oye se ve bueno...
Pero así a la rápida , esto sería para extraer la lista a diario y buscar los más baratos ?
Habrá alguna opción de extraer stock ? (No me fijé si estaba)
 

Morello

ODUM
Desde
24 Jul 2019
Mensajes
2.345
correcto, tienes que actualizar a mano (sepodria hacer un scrip, si alguien colabora cof cof)
el stock tendría que estar en la web, difícil que suceda.
 

Insight

ODUM
Desde
24 Jul 2019
Mensajes
2.379
tremenda guia. Vere si la puedo implementar en alguna categoria. Se ve reinteresante asi de primeras podriamos en teoria sacar ofertas antes para odum
 

SebaRG

Baneado
Desde
25 Jul 2019
Mensajes
2.750
lo estaba haciendo pero me envole
en estos pasos

edit

vamos avanzando
 

positive

ODUM
Desde
24 Jul 2019
Mensajes
709
buena, mañana me pongo a trabajar en algo para automatizarlo. Con eso ya podríamos tener una herramienta solida para lo que buscamos.
 

Epiglo

ODUM
Desde
24 Jul 2019
Mensajes
2.475
positive' pid='6638' dateline='1566275428 dijo:
buena, mañana me pongo a trabajar en algo para automatizarlo. Con eso ya podríamos tener una herramienta solida para lo que buscamos.
Bacan, yo no soy informatico, pero si haces un programa o algo asi, ponle clave de acceso, o alguna cosa, asi no se va a filtrar a terceros ;)
 

Morello

ODUM
Desde
24 Jul 2019
Mensajes
2.345
positive' pid='6638' dateline='1566275428 dijo:
buena, mañana me pongo a trabajar en algo para automatizarlo. Con eso ya podríamos tener una herramienta solida para lo que buscamos.
[size=small][font=Tahoma, Verdana, Arial, sans-serif]les dejo un archivo con 144 productos para practicar y se motiven [/font][/size]
[size=small][font=Tahoma, Verdana, Arial, sans-serif]son 3 querys que adjunte en ' tabla general' [/font][/size]
[size=small][font=Tahoma, Verdana, Arial, sans-serif]solo actualizan y exportan datos, pasos (3) y (4) [/font][/size]
[size=small][font=Tahoma, Verdana, Arial, sans-serif]https://mega.nz/#!11t0iACI!bUvA3kxluWdP-iJt4C0ZaAt69vmlCrXZv7Z-sOh6ozY [/font][/size]
[size=small][font=Tahoma, Verdana, Arial, sans-serif]pd: si el enlace falla me avisan[/font][/size]
 

Epiglo

ODUM
Desde
24 Jul 2019
Mensajes
2.475
Duda, me dice que me registre para probarlo por 60 dias.. despues hay que pagar suscripcion? o se puede seguir usando?
 

luisrobles

ODUM
Desde
27 Jul 2019
Mensajes
1.002
Ojo que se puede hacer con excel también, ya que power query está disponible en excel 2010 hacia adelante...
EDIT: La edición por campo es solo en power BI.
Sobre automatizarlo, se puede hacer para que actualice cada vez que se abra el archivo. También se puede compartir en archivo BI y dejar en un one drive o algo similar.
Enviado desde mi MI MAX 3 mediante Tapatalk
 
Volver
Arriba