PTENES
MÓDULO 2.5

🕷️ Build: scraping a CSV

La implementación real de la ruta: tomar un sitio público y devolver un CSV estructurado. Ves las cuatro operaciones de Firecrawl lado a lado y qué hacer cuando extract vuelve con las manos vacías.

6
Temas
45
Minutos
Principiante
Nivel
Build
Tipo
0 de 60%
1

🎯 La construcción: de un sitio público a un CSV estructurado

sitio → Firecrawl → agente → CSV 🌐 Sitio página pública 🔥 Firecrawl servidor MCP 🤖 Agente organiza los datos 📊 CSV listo para la hoja de cálculo

Leyenda: el recorrido completo del build: Firecrawl obtiene el contenido sin procesar del sitio, el agente organiza lo que interesa y guarda un CSV que se abre directamente en una hoja de cálculo.

¿Eres nuevo aquí? Scraping es el nombre técnico para «extraer información de una página web automáticamente». CSV es un archivo de tabla simple (Comma-Separated Values: valores separados por comas) que cualquier hoja de cálculo abre directamente. En este build le pedirás al agente que lea una página pública y entregue sus datos organizados en una tabla, sin que tengas que tocar ningún código de scraping.

Este es el módulo práctico de la Ruta 2: hasta aquí aprendiste qué es el protocolo MCP (2.1), cómo se organiza por dentro un servidor MCP (2.2), cómo instalar y autenticar uno (2.3) y cómo guardar instrucciones permanentes en una cheat sheet (2.4). Ahora todo eso se convierte en un resultado concreto: un archivo de datos que puedes abrir y mostrarle a alguien. Ese tipo de entrega tangible es lo que separa «aprendí sobre MCP» de «usé MCP para resolver un problema real».

Paso 1 — Servidor MCP conectado

Firecrawl ya está instalado y autenticado (eso fue el módulo 2.3); sin eso, ninguno de los comandos de este build funciona.

Paso 2 — Tú describes el pedido

Un párrafo en portugués: qué sitio, qué campos, qué nombre de archivo. El agente lo traduce en llamadas técnicas.

Paso 3 — El agente ejecuta y organiza

Elige entre map/crawl/extract, maneja los errores que surgen y arma la tabla.

Paso 4 — Tú revisas el CSV

Ábrelo en una hoja de cálculo, revisa si las columnas tienen sentido y si no faltan datos.

🔍 Ver por dentro

Entre tu solicitud y el CSV listo, lo que circula son llamadas del agente al servidor MCP de Firecrawl: cada una solicita una operación (scrape, map, crawl o extract) y recibe texto o datos estructurados en formato JSON (una forma de organizar datos en pares "campo: valor", parecida a una ficha). La clave de API (la contraseña que identifica tu cuenta de Firecrawl) se guarda localmente, nunca aparece en pantalla ni circula en la solicitud escrita: solo el agente y el servidor MCP la intercambian en segundo plano. Y sí: cada llamada tiene un pequeño costo dentro de tu plan de Firecrawl, así que las solicitudes concretas (pocas páginas, campos específicos) cuestan menos que «trae todo lo que encuentres».

2

📊 Las cuatro operaciones de Firecrawl, una al lado de la otra

¿Eres nuevo aquí? O Firecrawl es el servidor MCP que este build usa para leer sitios. Ofrece cuatro operaciones con propósitos muy distintos: saber cuál pedir (o dejar que la cheat sheet del módulo 2.4 guíe al agente) evita pedidos vagos y resultados vacíos.

Operación Qué hace Cuándo usar Ejemplo de solicitud
scrape Trae el contenido de una solo una página. Ya sabes la dirección exacta. "Trae el texto de esta página"
map Lista todas las direcciones (URLs) de un sitio, sin traer el contenido. Quieres ver el mapa del sitio antes de decidir qué descargar. "Lista todas las páginas de ese sitio"
crawl Recorre varias páginas y trae el contenido de cada una. Quieres el sitio completo (o una sección). "Descarga el contenido de todo el blog"
extract Trae solo los campos que pediste, ya organizados (precio, nombre, fecha...). Quieres datos específicos, no el texto completo. "Extrae el nombre y el precio de cada producto"

💡 Consejo práctico

Para este build, vas a combinar map (encontrar las páginas de productos) con extract (extraer el nombre y el precio de cada uno): es la combinación más común para convertirlo en CSV.

Un error común de quienes están empezando es pedir crawl cuando en realidad quería extract — el resultado viene lleno de texto suelto, difícil de organizar en columnas. Si tu objetivo final es una tabla (filas y columnas, como un CSV), empieza pensando en extract; si el objetivo es "leer el contenido" sin una estructura fija, crawl o scrape bastan.

✓ Solicitud bien descrita

  • ✓"Extrae el nombre, el precio y la categoría de cada producto de la página de la tienda"
  • ✓Indica el sitio, los campos y el nombre del archivo de salida

✗ Solicitud vaga

  • ✗"Obtén los datos de ese sitio"
  • ✗No indica qué campos ni en qué formato quieres el resultado
3

🗂️ Paso a paso: de la solicitud al CSV

Con el servidor MCP de Firecrawl ya iniciado (módulo 2.3), todo el build se resuelve con una solicitud bien descrita —el agente decide por su cuenta entre map/crawl/extract según lo que pediste.

# Pega en la conversación con Claude Code:
Mapea las páginas de producto del sitio <https://exemplo.com/loja>,
extrae el nombre, el precio y la categoría de cada producto y guarda todo en un archivo
productos.csv con esas tres columnas.

Objetivo: generar un CSV con datos reales extraídos del sitio. Cómo verificar: abre produtos.csv en una hoja de cálculo (Excel, Google Sheets, LibreOffice) y confirma que cada fila tenga el nombre, el precio y la categoría completos, sin demasiadas celdas vacías.

una solicitud en portugués se convierte en tres llamadas técnicas tu solicitud sitio + campos + nombre del archivo map(url) extract(campos) guardar(csv) 📊 productos.csv nombre, precio, categoría una línea por producto

Leyenda: nunca escribes las tres llamadas técnicas: solo describes el resultado que quieres. El agente es quien traduce la solicitud en map, extract y guardar el archivo.

Dos errores que bloquean este paso antes incluso de empezar: clave de API inválida o vencida — Firecrawl responde con un error de autenticación y el agente ni siquiera puede intentarlo; la solución es volver al módulo 2.3 y autenticarte de nuevo. Y dirección escrita incorrectamente — un https:// que falte o que tenga un error de escritura en el dominio hace que la primera llamada falle antes de que ocurra cualquier scraping. Revisa la dirección pegada antes de ejecutar.

4

🕳️ Cuando extract vuelve vacío

extract volvió vacío, ¿y ahora qué? extract() = [] no volvió ningún dato 1. esquema simple menos campos, inténtalo de nuevo 2. pasa al scrape texto sin procesar, organízalo a mano 3. solo entonces reporta un fallo

Leyenda: el agente no se rinde ante el primer «no encontré nada»: prueba un esquema más simple y luego recurre al scrape sin procesar para organizarlo manualmente. Solo informa de un fallo real si los dos intentos fracasan. Es la autocorrección de la Trilha 1, aplicada ahora al scraping.

A veces el extract devuelve una lista vacía: la página puede tener una estructura diferente de la esperada, o los campos solicitados quizá no existan de esa forma. Aquí es exactamente donde la autocorrección de la Trilha 1 aparece en la práctica: un buen agente no se rinde ante el primer "no se encontró nada"; simplifica la solicitud (menos campos), vuelve a intentarlo y, si aun así no funciona, recurre al scrape en bruto y organiza los datos manualmente a partir del texto completo.

🔍 Por dentro

Puedes pedirlo explícitamente: «si extract no devuelve nada, intenta simplificar los campos y, si sigue fallando, usa scrape y organiza tú mismo los datos a partir del texto». Eso se convierte en una instrucción permanente si lo guardas en la cheat sheet del módulo 2.4.

Una lista vacía no es la única forma en que puede fallar el build: otros dos errores comunes aparecen a mitad del proceso. Un sitio que bloquea el scraping devuelve una respuesta de error (a veces llamada "403" o "acceso denegado") en lugar de contenido. En ese caso, insistir no sirve: el sitio simplemente no permite ese tipo de acceso automatizado, y lo correcto es averiguar si ofrece una API pública propia o descartar esa fuente. Y un límite de uso excedido (la cuota mensual de tu plan de Firecrawl) hace que cada llamada nueva falle hasta el próximo ciclo; el agente generalmente lo avisa en la respuesta de error; si ocurre a mitad de un crawl grande, es señal de que habría valido la pena pedir menos páginas a la vez.

5

⚖️ Límites, costo y ética del scraping

¿Eres nuevo aquí? Cada llamada a Firecrawl consume una cuota (un límite de uso mensual de tu plan) y algunos sitios prohíben el scraping en sus términos de uso o en un archivo llamado robots.txt. Antes de ejecutar un crawl grande, comprueba si el sitio lo permite y evita solicitar un volumen mayor del que realmente necesitas.

✓ Hacer

  • ✓Pedir solo las páginas que realmente necesitas
  • ✓Verificar si el sitio permite scraping antes de un crawl grande

✗ Evitar

  • ✗Rastrear todo el sitio «solo para ver»
  • ✗Ignorar avisos de bloqueo o de límite excedido

O robots.txt es un archivo sencillo que los sitios publican en la raíz de la dirección (algo como exemplo.com/robots.txt) que indica qué pueden y qué no pueden consultar los robots automáticos; Firecrawl suele respetar estas reglas por sí solo, pero conviene saber que existen, porque explican por qué a veces una parte del sitio simplemente no devuelve nada. Si el dato que quieres tiene que ver con información personal de terceros (nombres, correos electrónicos, teléfonos de personas físicas), trátala con el mismo cuidado que cualquier otro dato sensible: pregúntate si realmente necesitas ese campo antes de incluirlo en el CSV y nunca redistribuyas este tipo de datos sin necesidad.

💡 Consejo práctico

Si tienes por delante un crawl grande, empieza con un pedido pequeño (5-10 páginas) para validar que el formato del CSV quede como quieres. Solo después amplía al volumen total. Corregir un pedido pequeño es rápido; repetir un crawl enorme por un campo incorrecto, no.

6

🗓️ Repetir el build en otro sitio

Una vez que el servidor MCP y la cheat sheet están listos, repetir este build en otro sitio solo requiere cambiar la dirección y los campos deseados en la solicitud; el resto del flujo (map → extract → CSV, con fallback para scrape) ya está enseñado. Es el tipo de trabajo que realmente conviene automatizar, tema que Trilha 4 (Deploy) desarrollará más adelante.

¿Eres nuevo aquí? "Automatizar" aquí significa dejar que esa misma rutina se ejecute sola, sin que tengas que volver a copiar y pegar la solicitud; por ejemplo, generar el CSV actualizado todos los lunes por la mañana. Este módulo te ofrece la ejecución manual, bajo demanda; la Ruta 4 enseña a poner esa misma solicitud en un horario fijo, ejecutándose en un servidor, sin depender de que tu laptop esté encendida. Piensa en este módulo como el prototipo que demuestra que la solicitud funciona: solo después de validarla vale la pena invertir tiempo en automatizarla de verdad.

💡 Consejo práctico

Guarda la solicitud del paso 3 en un archivo de notas: la próxima vez, solo cambiarás la dirección del sitio y los campos, sin tener que volver a escribir todo desde cero.

✅ Resumen del módulo

✓
scrape: 1 página. map: lista URLs. crawl: varias páginas. extract: campos organizados.
✓
Build: map + extract es la combinación más común para convertirlo en CSV.
✓
Extract vacío: simplifica el esquema y luego recurre al scraping en bruto; solo entonces informa el fallo.
✓
Educación: respeta las cuotas y robots.txt; solicita solo el volumen necesario.

Próximo módulo:

2.6 — Varios agentes en paralelo