CodeGym /Cursos /Python SELF ES /Parseo de HTML con BeautifulSoup

Parseo de HTML con BeautifulSoup

Python SELF ES
Nivel 31 , Lección 2
Disponible

1. Carga y parseo de documentos HTML

Resumen rápido de la funcionalidad

La biblioteca requests es como nuestro "mensajero", que se embarca en la misión de recuperar el código HTML de las páginas web. Realiza solicitudes HTTP y entrega páginas, como un repartidor de pizzas, pero sin "Margarita" ni cajas.

BeautifulSoup, por otro lado, es nuestro "cocinero", que desmenuza fácilmente el HTML recibido en ingredientes (etiquetas, atributos y texto) para que podamos usarlos. Nos ayudará a encontrar los elementos necesarios y guardar toda la información importante.

Uso de la biblioteca requests

Ahora estamos listos para hacer nuestra primera solicitud HTTP y obtener el código HTML de una página. Practiquemos cargando la página example.com. Este sitio es un verdadero dinosaurio de internet y es perfecto para comenzar.

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# Verifiquemos que todo esté en orden
if response.status_code == 200:
    print("¡La página se cargó con éxito!")
else:
    print("Algo salió mal. Código de error:", response.status_code)

Este programa enviará una solicitud a la URL y mostrará éxito o error dependiendo de la respuesta. Si todo sale bien, tendremos el código HTML de la página como texto.

Seguimiento de códigos de error

Si automatizas el parsing, te toparás a menudo con que la página que debería cargarse no lo hace. Así que analizar los códigos de error es una parte obligatoria de cualquier proyecto que parsee más de un par de páginas.

El problema es que a los propietarios de sitios web no les gusta mucho que alguien esté parseando sus datos. En primer lugar, porque representa una carga para su sitio (cuando se parsean miles de páginas al mismo tiempo). En segundo lugar, porque son sus datos y ganan dinero con ellos. Hay muchas maneras de combatir el parsing: CAPCHA, CloudFlare, etc.

Para un negocio, lo ideal es poder parsear a todos tus competidores mientras nadie puede parsearte a ti. Algo así como una guerra fría.

Uso de BeautifulSoup para parsear HTML

Una vez obtenido el código HTML, podemos comenzar a estudiarlo con la ayuda de BeautifulSoup. Es como abrir un libro y leer su contenido:

Python

from bs4 import BeautifulSoup

# Pasamos el contenido del código HTML a BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Veamos qué hay dentro
print(soup.prettify())

El método prettify() formatea el código HTML de manera agradable, para que puedas estudiarlo. En la próxima sesión, empezaremos a bucear en este HTML como niños jugando en la arena. Y volveremos a casa cansados, sucios, pero felices :)

3. Práctica: carga y análisis de HTML

Para reforzar la comprensión, hagamos un ejercicio práctico. Trataremos de extraer el título y la descripción de la página example.com. Para ello, utilizaremos nuestros conocimientos de HTML y el nuevo conocimiento de BeautifulSoup.

Extracción de datos

Python

# Extracción del título de la página
title = soup.title.string
print("Título de la página:", title)

# Extracción del encabezado principal (h1)
main_heading = soup.h1.string
print("Encabezado principal:", main_heading)

# Extracción del contenido del primer párrafo
paragraph = soup.find('p').text
print("Primer párrafo:", paragraph)

En este ejemplo usamos los atributos title, h1, y el método find() para extraer de la página los fragmentos de información necesarios. ¡Nos convertimos en ciber-detectives estudiando pruebas en la escena del crimen!

4. Errores comunes

Seguramente, al trabajar con web scraping, te encontrarás con errores típicos, los cuales pueden incluir un manejo incorrecto de solicitudes HTTP, extracción de datos incorrecta o errores al parsear HTML. Crear scripts robustos y fiables requiere paciencia y práctica. Por ejemplo, siempre verifica el código de estado (response.status_code) para estar seguro de que tu solicitud se realizó con éxito. El uso incorrecto de los métodos find() y find_all() puede llevar a errores si no consideras la estructura de las páginas HTML. Siempre analiza el HTML antes de comenzar el parsing.

El web scraping tiene muchas aplicaciones prácticas: desde recolectar datos para análisis hasta monitorear precios de productos automáticamente. Este conocimiento puede ser útil en entrevistas, donde podrían pedirte ejemplos de código en proyectos. En la práctica real, por ejemplo, los marketers usan el scraping para monitorear precios de competencia, y los desarrolladores lo usan para integraciones con sitios externos.

El conocimiento de web scraping también es útil al procesar información para agregadores de noticias y sistemas analíticos. Puedes automatizar tareas repetitivas creando scripts que recolecten datos de diversas fuentes. ¡Vamos a seguir desarrollando nuestra aplicación virtual y sentirnos como auténticos maestros del web!

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION