CodeGym /Cursos /Python SELF ES /Trabajo con BeautifulSoup y extracción de información

Trabajo con BeautifulSoup y extracción de información

Python SELF ES
Nivel 31 , Lección 1
Disponible

Si piensas que las páginas web son simplemente bonitas imágenes y texto, tengo noticias para ti: son como cebollas: tienen muchas capas y pueden hacerte llorar (¡de alegría, claro!), cuando te das cuenta de cuántos datos puedes extraer. Hoy vamos a explorar las páginas HTML con la biblioteca BeautifulSoup. ¡Toma tu pala virtual y vamos a excavar!

1. Análisis de documentos HTML

Páginas simples

Vamos a desglosar algunos documentos HTML simples para entender de qué están hechos y qué elementos pueden ser interesantes para extraer datos.

Ejemplo de una página de noticias:

HTML

<html>
  <head>
    <title>Noticias</title>
  </head>
  <body>
    <h1>Noticia principal del día</h1>
    <p>¡Hoy pasó algo importante!</p>
  </body>
</html>

En este ejemplo, h1 contiene el título del artículo y p — el texto principal.

Impacto de la estructura HTML en el scraping

Antes de usar BeautifulSoup, es importante entender cómo está estructurado el documento HTML que quieres parsear. Esto nos permite identificar qué partes de la página contienen los datos necesarios. Por ejemplo, si estás buscando el título de la página, presta atención a <h1>, y para extraer una lista usa <ul> y <li>.

Preparación para el scraping

Antes de comenzar a extraer datos, es importante identificar las etiquetas clave y los atributos. Por ejemplo, si los desarrolladores web han etiquetado los datos en su página, como usando el atributo class="headline" para el título, esto te ayudará mucho. Usa herramientas de desarrollo en el navegador para estudiar la estructura del HTML. Para esto, haz clic con el botón derecho del ratón sobre un elemento y selecciona "Inspect" (en Google Chrome).

2. Instalación y configuración de bibliotecas

Instalar BeautifulSoup y requests

Para trabajar con HTML, usaremos la biblioteca BeautifulSoup. También, para cargar páginas HTML, nos será útil requests. La instalación es simple y solo requiere un par de comandos en tu consola:

Bash

pip install beautifulsoup4 requests

Trabajo conjunto de requests y BeautifulSoup

Requests nos permitirá obtener HTML de una página web, y BeautifulSoup ayudará a analizarla. Vamos a ver cómo funciona en acción:

Python

import requests
from bs4 import BeautifulSoup

# Cargamos la página
url = 'https://example.com'
response = requests.get(url)

# Parseamos la página con BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Extraemos el título de la página
title = soup.title.text
print('Título:', title)

3. Navegación y extracción de datos por etiquetas

Métodos de navegación

Ahora que tenemos un documento HTML, podemos usar BeautifulSoup para navegar por él. El genial método .select() permite extraer datos utilizando selectores de CSS.

Extracción de datos por etiquetas

BeautifulSoup ofrece métodos que permiten encontrar elementos por sus etiquetas, como find y find_all. Te ayudarán a encontrar los fragmentos de datos deseados:

Python

# Encontramos el primer párrafo
paragraph = soup.find('p').text
print('Primer párrafo:', paragraph)

# Encontramos todos los elementos de la lista
list_items = soup.find_all('li')
for item in list_items:
 print('Elemento de la lista:', item.text)

Uso de atributos para filtrar

A veces necesitarás extraer elementos que cumplan ciertas condiciones, como tener un determinado class. BeautifulSoup lo hace fácilmente:

Python

# Extraemos el elemento con una clase específica
headline = soup.find('h1', class_='main-headline').text
print('Título:', headline)

4. Uso de selectores CSS

¿Qué son los selectores CSS?

Los selectores CSS son una herramienta poderosa desde el punto de vista de un programador en Python, ya que permite extraer datos basados en criterios específicos. Pueden ser utilizados para buscar elementos con estilos comunes, haciendo el scraping más flexible y preciso.

Uso de selectores en BeautifulSoup

BeautifulSoup permite usar selectores CSS a través del método select. Por ejemplo:

Python

# Selección de todos los enlaces
links = soup.select('a')
for link in links:
 print('Enlace:', link['href'])

Incluso puedes combinar selectores para una selección más precisa. Por ejemplo, soup.select('div.article h2') seleccionará todos los h2 dentro de div con la clase article.

Ejemplos de búsqueda con selectores CSS

Apliquemos nuestro conocimiento en la práctica. Selecciona todos los párrafos con la clase highlight y muestra su texto:

Python

# Extraemos todos los párrafos con clase 'highlight'
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
 print('Párrafo destacado:', para.text)

Por ahora eso es todo, no olvides practicar tus habilidades de scraping hasta nuestro próximo encuentro. ¡Buena suerte en el emocionante mundo del parsing!

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