Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Scrapping web con beautifulsoup

El scrapping web consiste en acceder al contenido de páginas web de manera automatizada. Consiste en descargarse su contenido, que normalmente es HTML, para procesarlo y extraer la información que nos interesa.

En este ejemplo vamos a ver como hacer scrapping la siguiente página de Wikipedia:

Pongamos que el contenido que nos interesa es la siguiente tabla. Nuestro objetivo es escribir un script que permita acceder a este contenido desde Python.

Empezamos importando requests para obtener el código HTML y bs4 para buscar en el HTML.

import requests
from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/Python_(programming_language)"
tabla = {}

Con el siguiente código nos descargamos la web y buscamos la tabla de la clase infobox vevent que es la que almacena lo que nos interesa. Para localizar las etiquetas HTML del código que te interesa, desde tu navegador haz click derecho e “Inspeccionar”.

try:
    response = requests.get(url)
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'lxml')

    infobox = soup.find('table', class_='infobox vevent')
    if infobox:
        tabla = {
            fila.find('th').get_text(strip=True): fila.find('td').get_text(strip=True)
            for fila in infobox.find_all('tr')
            if fila.find('th') and fila.find('td')
        }

except requests.exceptions.RequestException as e:
    print(f"Error: {e}")

Esto almacena en tabla todo el contenido de la tabla de esa página de la Wikipedia. La key es la primera columna y el value la segunda. Podemos acceder a la entrada de Developer así. Como puedes ver, el contenido corresponde al de la web.

print(tabla["Developer"])
# Python Software Foundation

Aunque en este ejemplo hemos hecho scrapping de un campo muy concreto, el hecho de ser automático permite escalarlo mas allá. Por ejemplo, podrías hacer scrapping todos los días del precio de diferentes productos de Amazon y guardarlo en una base de datos para al final del año, ver la evolución del precio.

✏️ Ejercicios:

  • Crea una función que vaya a la sección de referencias y obtenga todos los enlaces que existen y los meta en una lista. Solo enlaces.