Web Scraping y análisis de datos
Introducción:
En este lab crearemos un robot que rastree los productos del e-commerce de la página web thenorthface.cl para hacer un preprocesado, almacenado y posterior análisis.
Programando el robot:
Pero... ¿Qué hace el bot?
Paso 1: Establece una conexión con la web indicada
Paso 2: Identifica y guarda el valor de la etiqueta “price” con el atributo “finalprice”
Paso 3: Identifica y guarda el valor de la etiqueta “product name”
Paso 4: Consolida la recolección de datos
El resultado de la ejecución es un archivo JSON (una lista que contiene un diccionario, que a la vez contiene una clave:valor) el cuál nos trae precios y nombres de productos:
Pre-procesado de los datos
Importando la data
Posteriormente a la limpieza nos traemos los datos:
import pandas as pd
df = pd.read_csv('resultado.csv')
df
Como vemos a continuación, tenemos un total de 194 productos, de los cuales 173 son únicos
df.describe(include='all')
Errores de origen
Consolidación de datos en DataBase
Instalando paquetes necesarios
!curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
!curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
!sudo apt-get update
!sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
!sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
!echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
!source ~/.bashrc
!sudo apt-get install -y unixodbc-dev
!pip install pyodbc
import pyodbc
Estableciendo la conexión e insertando los datos
driver='{ODBC Driver 17 for SQL Server}'
server_name = 'SECRET'
db_name = 'SECRET'
user = 'SECRET'
password = 'SECRET'
sql_conn = pyodbc.connect('''
DRIVER={};SERVER={};DATABASE={};UID={};PWD={};
'''.format(driver, server_name, db_name, user, password))
cursor = sql_conn.cursor()
for index, row in df.iterrows():
cursor.execute("INSERT INTO nortf_scraping_table (NombreProducto, Precio) values(?,?)", row.NombreProducto, row.Precio)
sql_conn.commit()
cursor.close()
sql_conn.close()
Revisamos la base de datos SQL para ver si están llegando los datos:
La data se insertó correctamente en el servidor