CodeGym /Cursos /Python SELF ES /Extracción de textos y atributos de elementos HTML con mé...

Extracción de textos y atributos de elementos HTML con métodos de BeautifulSoup

Python SELF ES
Nivel 32 , Lección 0
Disponible

1. Introducción a los métodos de extracción de texto

Hoy vamos a aprender a extraer datos textuales valiosos y atributos de elementos HTML. Guarda tu machete, porque con BeautifulSoup trabajar con código es como caminar por un jardín en otoño, donde las manzanas parecen pedir ser recogidas. ¿Listo para cosechar los frutos de tu aprendizaje? ¡Entonces empecemos!

Los métodos de extracción de texto de elementos HTML están en primer lugar en nuestra lista. Antes de comenzar a extraer texto, carguemos la página.

Python

import requests
from bs4 import BeautifulSoup

# Cargamos el código HTML de la página
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Ahora tenemos el objeto soup, que contiene la estructura jerárquica de nuestro documento HTML. Vamos a extraer texto de algún elemento, por ejemplo, un encabezado.

El método .text y get_text()

La propiedad .text y su análogo - el método get_text() nos permiten obtener el contenido textual de un elemento (y todos sus elementos anidados).

Python

# Extraemos texto del primer encabezado h1 encontrado
h1_tag = soup.find('h1')
print(h1_tag.text)  # o h1_tag.get_text()

Inténtalo tú mismo: encuentra otros elementos usando los métodos de búsqueda que estudiamos en lecciones anteriores y extrae texto de ellos. ¡Te sorprenderá cuánta información puedes obtener!

2. Extracción de valores de atributos

El texto está bien, pero a veces los datos importantes están ocultos en atributos, como pasaportes en bolsillos. Imagina que necesitas saber la dirección de un enlace o conseguir la URL de una imagen (y no me preguntes por qué podría necesitarse esto; quizás quieras recopilar una colección de fotos de gatitos).

Extrayendo valores de atributos

Supongamos que tenemos un elemento de enlace <a href="https://example.com">Example</a>. ¿Cómo obtenemos el valor de href? Es sencillo.

Python

# Extraemos el enlace
a_tag = soup.find('a')
link = a_tag['href']
print("Enlace:", link)

Este código extrajo el valor del atributo href. Cualquier otro atributo útil se puede extraer de manera similar.

Intentando extraer una imagen

Extraer la URL de una imagen puede ser igual de simple. Consideremos el caso de <img src="image.jpg" alt="Gatito">.

Python

# Extraemos la URL de la imagen
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL de la imagen:", image_url)

La belleza del trabajo con BeautifulSoup es que facilita la búsqueda y extracción de datos sin obligarnos a pensar demasiado en cómo funciona la estructura de HTML.

3. Ejemplos de extracción de texto y atributos

Es hora de pasar a ejemplos. Veamos una tarea un poco más compleja: extraer todos los enlaces de la página, junto con el texto dentro de las etiquetas <a>.

Ejemplo: extracción de todos los enlaces con texto

Python

# Encontramos todas las etiquetas a
a_tags = soup.find_all('a')

# Mostramos el enlace y el texto
for a_tag in a_tags:
    link = a_tag['href']
    text = a_tag.get_text()
    print(f"Texto: {text}, Enlace: {link}")

Como puedes ver, el método find_all encuentra cómodamente todos los elementos que cumplen con las condiciones de búsqueda, y el bucle for permite iterar sobre cada uno de ellos.

4. Manejo de errores

No olvides manejar los errores. A veces, la estructura HTML puede no ser como esperabas, o un elemento puede no tener el atributo esperado. Asegúrate de que tu código no "colapse" en estos casos.

Python

# Ejemplo de manejo de errores al extraer un atributo
try:
    link = a_tag['href']
except KeyError:
    link = None
    print("¡Atributo href no encontrado!")

Esto hará que el script sea más resistente y no se detenga debido a un error inesperado.

5. Aplicación real

En 2019, un emprendedor ruso compartió una historia sobre cómo su empresa, especializada en scraping de datos, alcanzó un volumen de negocios de 20 millones de rublos al año. Señaló que la recopilación automatizada de información no limita la competencia, sino que ayuda a las empresas a adaptarse al mercado.

Por ejemplo, uno de los clientes encargó un scraper para recolectar a diario el inventario de un proveedor, lo que permitió actualizar rápidamente el catálogo y los precios en su propia tienda en línea. El emprendedor también destacó que, a pesar de los intentos de algunos sitios de dificultar el scraping, las tecnologías modernas permiten sortear estos obstáculos de manera efectiva, brindando a las empresas acceso a los datos necesarios para tomar decisiones estratégicas.

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