---
title: "Extracción web con Jupyter Notebooks"
slug: web-scraping-with-jupyter-notebooks
date: 2025-01-22T15:37:57+00:00
modified: 2025-11-04T08:53:45+00:00
permalink: https://brightdata.es/blog/datos-web/web-scraping-with-jupyter-notebooks
type: blog
---

[ Blog ](https://brightdata.es/blog "Blog") / [Datos web](https://brightdata.es/blog/datos-web)







 [Datos web](https://brightdata.es/blog/datos-web)

# Extracción web con Jupyter Notebooks

Descubre cómo los Jupyter Notebooks simplifican la extracción web con codificación interactiva, análisis de datos y visualización.

 13 min de lectura





 [ ![Federico Trotta](https://media.brightdata.es/2024/12/Federico-50x50.jpg) ](https://brightdata.com/blog/authors/federico-trotta)

 [Federico Trotta

Technical Writer

 ](https://brightdata.com/blog/authors/federico-trotta)





 ![Web Scraping With Jupyter Notebooks blog image](https://media.brightdata.es/2025/01/Web-Scraping-With-Jupyter-Notebooks.svg)





En esta guía, aprenderás:

- Qué son los Jupyter Notebooks
- Por qué deberías usar Jupyter Notebooks para la extracción web
- Cómo usarlo en un tutorial paso a paso
- Casos de uso de Jupyter Notebooks para extraer datos en línea

¡Vamos allá!

## <a></a>¿Qué son los Jupyter Notebooks?

En el contexto de Jupyter, un [notebook](https://docs.jupyter.org/en/latest/) es «un documento que se puede compartir y que combina código de ordenador, descripciones en lenguaje sencillo, datos, tablas, gráficas y figuras, y controles interactivos».

Los notebooks proporcionan entornos interactivos para crear prototipos y explicar código, explorar y visualizar datos y compartir ideas. En particular, los notebooks producidos por la aplicación [Jupyter Notebook](https://jupyter.org/) se denominan Jupyter Notebooks.

La aplicación Jupyter Notebook es una aplicación servidor-cliente que permite editar y ejecutar [documentos del notebook](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html#notebook-document) a través de un navegador web. Se puede ejecutar en un escritorio local o se puede instalar en un servidor remoto.

![La interfaz de la aplicación Jupyter Notebook](https://media.brightdata.com/2025/01/image-85-1024x250.png)Los Jupyter Notebooks proporcionan el denominado «núcleo», que es un «motor computacional» que ejecuta el código contenido en un documento de Notebook. En detalle, el núcleo `ipython` ejecuta código Python (pero existen núcleos en otros lenguajes):

![Lanzar un nuevo documento a través del núcleo de ipython](https://media.brightdata.com/2025/01/image-86.png)La aplicación Jupyter Notebook incluye un panel de control que admite operaciones típicas, como mostrar archivos locales, abrir documentos de bloc de notas existentes, administrar los núcleos de los documentos y más:

![El panel de control de Jupyter Notebooks](https://media.brightdata.com/2025/01/image-87-1024x272.png)## <a></a>¿Por qué usar Jupyter Notebooks para la extracción web?

Los Jupyter Notebooks están diseñados específicamente para el análisis de datos y para fines de I+D, y son útiles para la extracción web debido a que:

- **Desarrollo interactivo**: escribe y ejecuta código en fragmentos pequeños y manejables llamados celdas. Cada celda puede funcionar de forma independiente de las demás. Esto garantiza la simplificación de las pruebas y la depuración.
- **Organización**: usa Markdown en sus celdas para documentar el código, explicar la lógica y añadir notas o instrucciones.
- **Integración con herramientas de análisis de datos**: tras la extracción, puedes limpiar, procesar y analizar inmediatamente los datos en Python, ya que los Jupyter Notebooks se integran con bibliotecas como `pandas`, `matplotlib`, `seaborn`y más.
- **Reproducibilidad y uso compartido**: los Jupyter Notebooks se pueden compartir fácilmente con otros como archivos `.ipynb` (su formato estándar) o convertirse a otros formatos como [ReST](https://docutils.sourceforge.io/rst.html), Markdown y más.

### <a></a>Ventajas y desventajas

Estos son las ventajas y desventajas de usar Jupyter Notebooks para la extracción de datos:

**👍Ventajas**:

- **Depuración paso a paso**: como cada celda puede ejecutarse de forma independiente, puede subdividir el código de extracción de datos en diferentes celdas y ejecutarlas. Esto le permite depurar pequeños fragmentos de código ejecutando las celdas e interceptando errores a nivel de celda.
- **Documentación**: usa Markdown en las celdas para crear archivos en los que puedas documentar el funcionamiento del código de extracción y describir la lógica detrás de las elecciones que has hecho.
- **Flexibilidad**: en Jupyter Notebooks, puedes combinar la extracción web, la limpieza de datos y el análisis en un solo entorno. Esto permite alternar entre distintos entornos, como escribir el guion de extracción de datos en un entorno de desarrollo y analizar la información en otra plataforma.

**👎 Desventajas**:

- **No es ideal para proyectos a gran escala**: los Jupyter Notebooks tienden a convertirse en documentos largos. Esto hace que no sean la opción ideal para proyectos de extracción de datos a gran escala.
- **Limitaciones de rendimiento**: Los ordenadores portátiles tienden a ser lentos o no responden cuando se trabaja con conjuntos de datos de gran tamaño o se ejecutan guiones de extracción largos. Más información sobre [cómo hacer que la extracción web sea más rápida](/blog/datos-web/speed-up-web-scraping).
- **No es ideal para la automatización**: si necesitas ejecutar tu extractor de datos según un cronograma o implementarlo como parte de un sistema más grande, los Jupyter Notebooks no son la mejor opción. La razón es que están diseñados principalmente para la ejecución manual e interactiva de celdas.

## <a></a>Cómo usar Jupyter Notebooks para la extracción web: tutorial paso a paso

Ahora sabes por qué deberías usar Jupyter Notebooks para la extracción web. Por lo tanto, ¡estás listo para ver cómo puedes usarlos en un escenario de extracción del mundo real!

### <a></a>Requisitos previos

Para replicar este tutorial, tu sistema debe cumplir los siguientes requisitos previos:

- [**Python 3.6 o superior**](https://www.python.org/downloads/): cualquier versión de Python superior a 3.6 es válida. Específicamente, instalaremos las dependencias mediante `pip`, que ya viene instalado con cualquier versión de Python superior a la 3.4.

### <a></a>Paso 1: configurar el entorno e instalar las dependencias

Supongamos que llamas a la carpeta principal de tu proyecto `scraper/`. Al final de este paso, la carpeta tendrá la siguiente estructura:

```none
scraper/
    ├── analysis.ipynb
    └── venv/

```

Dónde:

- `analysis.ipynb` es el Jupyter Notebook que contiene todo el código.
- `venv/` contiene el entorno virtual.

Puedes crear el directorio `venv/` [del entorno virtual](https://docs.python.org/3/library/venv.html) de la siguiente manera:

```none
python -m venv venv

```

Para activarlo, en Windows, ejecuta:

```none
venvScriptsactivate

```

De manera equivalente, en macOS/Linux, ejecuta:

```none
source venv/bin/activate

```

En el entorno virtual activado, instala todas las bibliotecas necesarias para este tutorial:

```none
pip install requests beautifulsoup4 pandas jupyter seaborn

```

Estas bibliotecas tienen los siguientes propósitos:

- [**`solicitudes`**](https://requests.readthedocs.io/en/latest/): para realizar solicitudes HTTP.
- [**`beautifulsoup4`**](https://beautiful-soup-4.readthedocs.io/en/latest/): Para el análisis de documentos HTML y XML.
- [**`pandas`**](https://pandas.pydata.org/): una potente biblioteca de análisis y manipulación de datos, ideal para trabajar con datos estructurados como tablas o archivos CSV.
- [**`jupyter`**](https://pypi.org/project/jupyter/): un entorno de desarrollo interactivo basado en la web para ejecutar y compartir código Python, ideal para el análisis y la visualización.
- [**`seaborn`**](https://seaborn.pydata.org/): una biblioteca de visualización de datos de Python basada en [Matplotlib](https://matplotlib.org/).

Para crear el archivo `analysis.ipynb` , primero tienes que entrar en la carpeta `scraper/` :

```none
cd scraper

```

Luego, inicializa un nuevo Jupyter Notebook con este comando:

```none
jupyter notebook

```

Ahora puedes acceder a tu aplicación Jupyter Notebook a través de `locahost8888`.

Crea un nuevo archivo haciendo clic en la opción «Nuevo &gt; Python 3»:

![Creación de un nuevo archivo Jupyter Notebook](https://media.brightdata.com/2025/01/image-84.png)El nuevo archivo se llamará automáticamente `untitled.ipynb`. Puedes cambiarle el nombre en el panel de control:

![Renombrar un nuevo archivo Jupyter Notebook](https://media.brightdata.com/2025/01/image-83-1024x390.png)¡Genial! Ya está completamente preparado para la extracción web con Jupyter Notebooks.

### <a></a>Paso 2: define la página de destino

En este tutorial, extraerás los datos del sitio web [worldometer](https://www.worldometers.info/). En particular, la página de destino es la relacionada con [emisiones de CO2 en los Estados Unidos](https://www.worldometers.info/co2-emissions/us-co2-emissions/) por año que proporciona datos tabulares como los siguientes:

![Los datos tabulares sobre las emisiones de CO2 por año en los Estados Unidos](https://media.brightdata.com/2025/01/image-82.png)### <a></a>Paso 3: recuperar los datos

Puedes recuperar los datos de la página de destino y guardarlos en un archivo CSV de la siguiente manera:

```none
import requests
from bs4 import BeautifulSoup
import csv

# URL of the website
url = "https://www.worldometers.info/co2-emissions/us-co2-emissions/"

# Send a GET request to the website
response = requests.get(url)
response.raise_for_status()

# Parse the HTML content
soup = BeautifulSoup(response.text, "html.parser")

# Locate the table
table = soup.find("table")

# Extract table headers
headers = [header.text.strip() for header in table.find_all("th")]

# Extract table rows
rows = []
for row in table.find_all("tr")[1:]:  # Skip the header row
    cells = row.find_all("td")
    row_data = [cell.text.strip() for cell in cells]
    rows.append(row_data)

# Save the data to a CSV file
csv_file = "emissions.csv"
with open(csv_file, mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(headers)  # Write headers
    writer.writerows(rows)    # Write rows

print(f"Data has been saved to {csv_file}")

```

Esto es lo que hace este código:

- Utiliza la biblioteca`requests` para enviar una solicitud GET a la página de destino mediante el método `requests.get ()`y comprueba si hay errores de solicitud mediante el método `response.raise_for_status ()`.
- Usa `BeautifulSoup` para analizar el contenido HTML creando una instancia de la clase `BeautifulSoup ()` y buscando el selector `table` con el método `soup.find ()`. En particular, este método es útil para localizar la tabla que contiene los datos. Si no estás familiarizado con esta sintaxis, consulta nuestra guía sobre [la extracción de datos web de BeautifulSoup](https://brightdata.es/blog/procedimientos/raspado-de-datos-web-usando-beautiful-soup-de-python).
- Utiliza la comprensión de una lista para extraer el encabezado de la tabla.
- Utiliza un bucle `for` para recuperar todos los datos de la tabla y omitir la fila del encabezado.
- Por último, abre un nuevo archivo CVS y añade allí todos los datos recuperados.

Puedes pegar este código en una celda y ejecutarlo pulsando `SHIFT+ENTER`.

Otra forma de ejecutar la celda es seleccionarla y pulsar el botón «Ejecutar» del panel:

![Ejecutar una celda en un Jupyter Notebook](https://media.brightdata.com/2025/01/image-81-1024x709.png)Sorprendente, mira cómo el mensaje «Los datos se han guardado en emissions.csv» te notifica que la operación de extracción de datos se ha realizado correctamente.

### <a></a>Paso 4: asegúrate de que los datos son correctos

Ahora que ha guardado los datos en un archivo CVS. Abre el archivo CSV y verifica si todo ha salido bien; a veces puedes enfrentar problemas con las conversiones. Para ello, puedes escribir el siguiente código en una nueva celda:

```none
import pandas as pd

# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)

# Print the DataFrame
df.head()

```

Este código hace lo siguiente:

- Abre el archivo CSV como un marco de datos, gracias a `pandas`, con el método `pd.read_csv ()`.
- Ejecuta las cinco primeras filas del marco de datos con el método `df.head ()`.

He aquí el resultado previsto:

![Las cinco primeras filas del marco de datos](https://media.brightdata.com/2025/01/image-80-1024x238.png)¡Estupendo! Solo queda representar los datos extraídos.

### <a></a>Paso 5: visualizar los datos

Ahora puedes realizar cualquier análisis de datos que prefieras. Por ejemplo, puedes usar `seaborn` para crear un gráfico de líneas que muestre la tendencia de las emisiones de CO2 a lo largo de los años. Hazlo de la siguiente manera:

```none
import seaborn as sns
import matplotlib.pyplot as plt

# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)

# Clean column names be removing extra spaces
df.columns = df.columns.str.strip().str.replace('  ', ' ')

# Convert 'Fossil CO2 Emissions (tons)' to numeric
df['Fossil CO2 Emissions (tons)'] = df['Fossil CO2 Emissions (tons)'].str.replace(',', '').astype(float)

# Ensure the 'Year' column is numeric
df['Year'] = pd.to_numeric(df['Year'], errors='coerce')
df = df.sort_values(by='Year')

# Create the line plot
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x='Year', y='Fossil CO2 Emissions (tons)', marker='o')

# Add labels and title
plt.title('Trend of Fossil CO2 Emissions Over the Years', fontsize=16)
plt.xlabel('Year', fontsize=12)
plt.ylabel('Fossil CO2 Emissions (tons)', fontsize=12)
plt.grid(True)
plt.show()

```

Esto es lo que hace este código:

- Usa `pandas` para:
    - Abrir el archivo CSV.
    - Limpiar los nombres de las columnas eliminando los espacios adicionales con el método `df.columns.str.strip () .str.replace ('', '')` (si no lo usas, obtendrás errores en el código de este ejemplo).
    - Acceder a la columna «Emisiones de CO2 fósil (toneladas)» y convertir los datos en números con el método `df ['Emisiones de CO2 fósil (toneladas) '] .str.replace (', ', «) .astype (float)`.
    - Acceder a la columna «Años», convierte los valores en números con el método `pd.to_numeric ()`y ordena los valores en orden ascendente con el método `df.sort_values ()`.
- Utilizar las bibliotecas `matplotlib` y `seaborn` (que se basa en [`matplotlib`](https://matplotlib.org/), por lo que se instala al instalar `seaborn`) para crear la gráfica real.

He aquí el resultado previsto:

![La gráfica resultante](https://media.brightdata.com/2025/01/image-79.png)¡Genial! Así de poderoso es la extracción de datos de Jupyter Notebook.

### <a></a>Paso 6: juntarlo todo

Así es como se ve el documento final de extracción web de Jupyter Notebook:

![El documento completo de Jupyter Notebook](https://media.brightdata.com/2025/01/image-78.png)Ten en cuenta la presencia de diferentes bloques, cada uno con su salida.

## <a></a>Casos de uso del la extracción web de Jupyter Notebook

¡Es hora de analizar los casos prácticos del uso de Jupyter Notebooks mientras se hace la extracción de datos web!

### <a></a>Tutoriales

No olvides que cada celda de un Jupyter Notebook se puede ejecutar de forma independiente. Con la compatibilidad añadida con Markdown, la biblioteca se convierte en una excelente herramienta para crear tutoriales paso a paso.

Por ejemplo, puedes alternar entre las celdas que contienen código y las que explican la lógica y el razonamiento detrás de él. En el caso de la extracción de datos web, los Jupyter Notebooks son particularmente útiles. Se pueden usar para crear tutoriales para desarrolladores jóvenes, guiándolos en cada paso del proceso.

### <a></a>Ciencia e investigación (I+D)

Debido a su naturaleza interactiva y a la capacidad de exportarse fácilmente para colaborar, los Jupyter Notebooks son ideales para fines de investigación e I+D. Esto es especialmente cierto para la extracción de datos web. Por ejemplo, al rastrear sitios web que requieren varias rondas de prueba y error, puedes guardar todas tus pruebas en un solo bloc de notas y usar Markdown para resaltar las pruebas que han tenido éxito.

### <a></a>Exploración de datos

La biblioteca Jupyter se ha diseñado específicamente para la exploración y el análisis de datos. Esto también la convierte en una herramienta perfecta para [extracción web para el aprendizaje automático](https://brightdata.es/blog/datos-web/web-scraping-for-machine-learning).

Este caso de uso se aplica directamente al ejemplo que codificaste anteriormente. Recuperó los datos del sitio web y los analizó de inmediato, todo dentro del mismo entorno de codificación.

## <a></a>Conclusión

En esta publicación, descubriste cómo los Jupyter Notebooks pueden ser una poderosa herramienta para la extracción web, ya que ofrecen un entorno interactivo y flexible para la extracción y el análisis de datos. Sin embargo, cuando se trata de escalar sus operaciones de extracción de datos web o automatizar tareas, es posible que Jupyter Notebooks no sea la solución más eficiente.

Ahí es donde entran en juego [nuestros extractores de datos web](https://brightdata.es/products/web-scraper). Tanto si eres un desarrollador que busca soluciones basadas en API como si buscas una opción sin código, nuestros extractores de datos web están diseñados para simplificar y mejorar sus esfuerzos de recopilación de datos. Con funciones como puntos de enlace dedicados para más de 100 dominios, gestión de solicitudes masivas, [rotación automática de IP](https://brightdata.es/solutions/rotating-proxies) y [resolución de CAPTCHA](https://brightdata.es/products/web-unlocker/captcha-solver), puedes extraer datos estructurados sin esfuerzo y a gran escala. ¡Crea una cuenta gratuita de Bright Data hoy mismo para probar nuestras soluciones de extracción y probar nuestros proxis!



Contactar ventasPrueba gratuita![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Tabla de Contenidos













 [ ](https://news.ycombinator.com/submitlink?t=Extracci%C3%B3n+web+con+Jupyter+Notebooks&u=https://brightdata.es/blog/datos-web/web-scraping-with-jupyter-notebooks) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Extracci%C3%B3n+web+con+Jupyter+Notebooks&url=https://brightdata.es/blog/datos-web/web-scraping-with-jupyter-notebooks) [ ](http://www.reddit.com/submit?title=Extracci%C3%B3n+web+con+Jupyter+Notebooks&url=https://brightdata.es/blog/datos-web/web-scraping-with-jupyter-notebooks)







##  Usted también puede estar interesado en

 [ ![OpenHuman with Bright Data](https://media.brightdata.es/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.es/blog/ai/openhuman-with-bright-data "Acceso Web Listo para Producción en OpenHuman a Través de la CLI de Bright Data")

 [AI



 ![Antonello Zanini](https://media.brightdata.es/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Acceso Web Listo para Producción en OpenHuman a Través de la CLI de Bright Data

Integra la CLI de Bright Data con OpenHuman para habilitar acceso web listo para producción y recopilación de datos para agentes de IA.



 09-Sep-2026

 14 min de lectura

 ](https://brightdata.es/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.es/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.es/blog/datos-web/multimodal-web-scraping-with-minimax "Scraping Web Multimodal con MiniMax")

 [Datos web



 ![Antonello Zanini](https://media.brightdata.es/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Scraping Web Multimodal con MiniMax

Combina Bright Data Web Unlocker con la visión de MiniMax M3 para extraer datos estructurados de imágenes y capturas de pantalla de páginas web.



 09-Sep-2026

 5 min de lectura

 ](https://brightdata.es/blog/datos-web/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.es/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.es/blog/ai/best-cli-tools-for-codex "Las 10 mejores herramientas CLI para Codex en 2026 – Probadas y clasificadas")

 [AI



 ![Daniel Shashko](https://media.brightdata.es/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### Las 10 mejores herramientas CLI para Codex en 2026 – Probadas y clasificadas

Las 10 herramientas CLI que hacen a Codex más rápido y capaz, comenzando con la Bright Data CLI para acceso web real desde dentro del sandbox.



 06-Sep-2026

 24 min de lectura

 ](https://brightdata.es/blog/ai/best-cli-tools-for-codex)
