Web Scraping Con Python Ejemplo
Web Scraping Con Python Ejemplo
Web Scraping Con Python Ejemplo
En este corto paper veremos como recrear en python el ejercicio de web scraping visto en r:
https://www.linkedin.com/pulse/practica-de-rstudio-graficos-animados-juan-lastra/
usaremos la misma pagina web y buscamos los mismos resultados, es decir un grafico animado que
muestra como avanza el salario minimo colombiano; recordemos las caracteristicas de esta pagina
web:
https://www.salariominimocolombia.net/historico/
esta nos mostraba el año y el salario minimo de dicho año; nuestro objetivo es obtener los datos de
la pagina web limpiarlos y mostrarlos de una mejor manera.
para comenzar debemos tener instalados los siguientes paquetes:
• request
• pandas
• matplotlib
0.1 paso 1
Como sucedia en R nuestro objetivo es guardar toda la información que contiene la pagina web
en un dataframe, para ello utilizaremos la función requests.get() del paquete requests y el metodo
content para analizar la url y el contenido que esta tiene.
luego dicho contenido lo aplicaremos a la función read_html del paquete pandas esto guardara en
una especie de lista todas las tablas que puede contener la pagina web; en nuestro caso las guarda
dentro de la variable df. recordemos que buscamos obtener la primera y unica tabla que existe, asi
que seleccionamos de la lista df el primer objeto es decir el 0.
[216]: ## importar paquetes necesarios
import requests
import pandas as pd
import matplotlib.pyplot as plt
1
url = "https://www.salariominimocolombia.net/historico/"
html = requests.get(url).content
df = pd.read_html(html)
df = df[0]
df.head()
[217]: salario
1 $ 1,000,000
2 $ 908,526
3 $ 877,803
4 $ 828,116
5 $ 781,242
Una vez hecho lo anterior, debemos volver a crear una variable que nos muestre el año, para el
momento de este articulo el ultimo año registrado es el 2022 y el año inicial recopilado es de 1984.
por lo tanto debemos crear una columna que vaya de 2022 a 1984.
2
[218]: años = list(range(2022, 1983, -1))
df["años"] = años
df.head()
tambien debemos concentrarnos en eliminar todos los caracteres de la columna salario que no sean
numericos, esto lo intentamos realizar con la primera expresión regular. funciona bastante bien para
hacer un acondicionamiento a lo que queremos sin embargo se resisten los caracteres “$” y la coma.
por eso hacemos los siguientes 2 replazos.
sin olvidarnos de definir el tipo de columna salario como entero.
[219]: df["salario"] = df.salario.str.replace('^[-+]?[0-9]+$', '')
df["salario"] = df.salario.str.replace('$', '')
df["salario"] = df.salario.str.replace(',', '')
df["salario"] = df["salario"].astype(int)
df.head()
3
[220]: Text(0, 0.5, 'Salario')
[ ]:
[ ]:
[ ]: