MÓDULO 2.5

🕷️ Build: scraping para CSV

O build de verdade da trilha: pegar um site público e devolver um CSV estruturado. Você vê as quatro operações do Firecrawl lado a lado e o que fazer quando o extract volta de mãos vazias.

6
Tópicos
45
Minutos
Iniciante
Nível
Build
Tipo
0 de 60%
1

🎯 O build: de um site público a um CSV estruturado

site → Firecrawl → agente → CSV 🌐 Site página pública 🔥 Firecrawl servidor MCP 🤖 Agente organiza os dados 📊 CSV pronto pra planilha

Legenda: o caminho completo do build — o Firecrawl traz o conteúdo bruto do site, o agente organiza o que interessa e grava um CSV que abre direto numa planilha.

Novo aqui? Scraping é o nome técnico pra "extrair informação de uma página da web de forma automática". CSV é um arquivo de tabela simples (Comma-Separated Values — valores separados por vírgula) que qualquer planilha abre direto. Neste build você vai pedir pro agente ler uma página pública e entregar os dados dela organizados numa tabela — sem você tocar em código de scraping nenhum.

Este é o módulo "mão na massa" da Trilha 2: até aqui você aprendeu o que é o protocolo MCP (2.1), como um servidor MCP é organizado por dentro (2.2), como instalar e autenticar um (2.3), e como guardar instruções permanentes num cheat sheet (2.4). Agora tudo isso vira um resultado concreto — um arquivo de dados que você consegue abrir e mostrar pra alguém. É esse tipo de entrega tangível que separa "aprendi sobre MCP" de "usei MCP pra resolver um problema real".

Passo 1 — Servidor MCP ligado

O Firecrawl já está instalado e autenticado (isso foi o módulo 2.3) — sem isso, nenhum dos comandos deste build funciona.

Passo 2 — Você descreve o pedido

Um parágrafo em português: qual site, quais campos, qual nome de arquivo. O agente traduz isso pra chamadas técnicas.

Passo 3 — O agente executa e organiza

Ele escolhe entre map/crawl/extract, lida com erros no caminho, e monta a tabela.

Passo 4 — Você confere o CSV

Abre numa planilha, olha se as colunas fazem sentido e se não faltam dados.

🔍 Ver por dentro

Entre o seu pedido e o CSV pronto, o que trafega são chamadas do agente pro servidor MCP do Firecrawl — cada uma pede uma operação (scrape, map, crawl ou extract) e recebe de volta texto ou dados estruturados em formato JSON (um jeito de organizar dados em pares "campo: valor", parecido com uma ficha). A chave de API (a senha que identifica sua conta no Firecrawl) fica guardada localmente, nunca aparece na tela nem circula pelo pedido em texto — só o agente e o servidor MCP trocam ela por trás dos panos. E sim: cada chamada tem um custo pequeno dentro do seu plano do Firecrawl, então pedidos objetivos (poucas páginas, campos específicos) saem mais baratos que "traga tudo que encontrar".

2

📊 As quatro operações do Firecrawl, lado a lado

Novo aqui? O Firecrawl é o servidor MCP que este build usa pra ler sites. Ele oferece quatro operações com propósitos bem diferentes — saber qual pedir (ou deixar o cheat sheet do módulo 2.4 guiar o agente) evita pedidos vagos e resultados vazios.

Operação O que faz Quando usar Exemplo de pedido
scrape Traz o conteúdo de uma página só. Você já sabe o endereço exato. "Traga o texto dessa página"
map Lista todos os endereços (URLs) de um site, sem trazer o conteúdo. Você quer ver o mapa do site antes de decidir o que baixar. "Liste todas as páginas desse site"
crawl Percorre várias páginas e traz o conteúdo de cada uma. Você quer o site inteiro (ou uma seção dele). "Baixe o conteúdo de todo o blog"
extract Traz só os campos que você pediu, já organizados (preço, nome, data...). Você quer dados específicos, não o texto inteiro. "Extraia nome e preço de cada produto"

💡 Dica Prática

Pra este build, você vai combinar map (achar as páginas de produto) com extract (tirar nome e preço de cada uma) — é a combinação mais comum pra virar CSV.

Um erro comum de quem está começando é pedir crawl quando na verdade queria extract — o resultado vem cheio de texto solto, difícil de organizar em colunas. Se o seu objetivo final é uma tabela (linhas e colunas, como um CSV), comece pensando em extract; se o objetivo é "ler o conteúdo" sem estrutura fixa, crawl ou scrape bastam.

✓ Pedido bem descrito

  • "Extraia nome, preço e categoria de cada produto da página de loja"
  • Diz o site, os campos e o nome do arquivo de saída

✗ Pedido vago

  • "Pega os dados desse site aí"
  • Não diz quais campos nem em que formato quer o resultado
3

🗂️ Passo a passo: do pedido ao CSV

Com o servidor MCP do Firecrawl já ligado (módulo 2.3), o build inteiro é um pedido bem descrito — o agente decide sozinho entre map/crawl/extract com base no que você pediu.

# Cole na conversa com o Claude Code:
Mapeie as páginas de produto do site <https://exemplo.com/loja>,
extraia nome, preço e categoria de cada produto, e salve tudo num arquivo
produtos.csv com essas três colunas.

Objetivo: gerar um CSV com dados reais extraídos do site. Como verificar: abra produtos.csv numa planilha (Excel, Google Sheets, LibreOffice) e confirme que cada linha tem nome, preço e categoria preenchidos — sem células vazias em excesso.

um pedido em português vira três chamadas técnicas seu pedido site + campos + nome do arquivo map(url) extract(campos) salvar(csv) 📊 produtos.csv nome, preço, categoria uma linha por produto

Legenda: você nunca escreve as três chamadas técnicas — só descreve o resultado que quer. O agente é quem traduz o pedido em map, extract e a gravação do arquivo.

Dois erros que travam esse passo antes mesmo de começar: chave de API inválida ou expirada — o Firecrawl responde com um erro de autenticação e o agente não consegue nem tentar; o conserto é revisitar o módulo 2.3 e reautenticar. E endereço digitado errado — um https:// faltando ou um domínio com erro de digitação faz a primeira chamada falhar antes de qualquer scraping acontecer. Confira o endereço colado antes de rodar.

4

🕳️ Quando o extract volta vazio

extract voltou vazio — e agora? extract() = [] nenhum dado voltou 1. esquema simples menos campos, tenta de novo 2. cai pro scrape texto bruto, organiza na mão 3. só então reporta falha

Legenda: o agente não desiste no primeiro "não achei nada" — ele tenta um esquema mais simples, depois recorre ao scrape bruto pra organizar manualmente, e só relata falha de verdade se as duas tentativas não funcionarem. É a auto-correção da Trilha 1, agora aplicada a scraping.

Às vezes o extract devolve uma lista vazia — a página pode ter uma estrutura diferente do esperado, ou os campos pedidos não existirem daquele jeito ali. É exatamente aqui que a auto-correção da Trilha 1 aparece na prática: um bom agente não desiste no primeiro "nada encontrado" — ele simplifica o pedido (menos campos), tenta de novo, e se ainda assim não der, recorre ao scrape bruto e organiza os dados manualmente a partir do texto completo.

🔍 Por dentro

Você pode pedir isso explicitamente: "se o extract não trouxer nada, tente simplificar os campos e, se ainda falhar, use scrape e organize você mesmo os dados a partir do texto." Isso vira uma instrução permanente se você guardar no cheat sheet do módulo 2.4.

Lista vazia não é o único jeito de o build falhar — outros dois erros comuns aparecem no meio do caminho. Um site que bloqueia scraping devolve uma resposta de erro (às vezes chamada de "403" ou "acesso negado") em vez de conteúdo — nesse caso, insistir não resolve; o site simplesmente não permite esse tipo de acesso automatizado, e o certo é procurar se ele oferece uma API pública própria ou desistir daquela fonte. E um limite de uso estourado (a cota mensal do seu plano do Firecrawl) faz toda chamada nova falhar até o próximo ciclo — o agente geralmente avisa isso na resposta de erro; se acontecer no meio de um crawl grande, é sinal de que valia a pena ter pedido menos páginas de uma vez.

5

⚖️ Limites, custo e educação de scraping

Novo aqui? Cada chamada ao Firecrawl consome uma cota (um limite de uso mensal do seu plano) e alguns sites proíbem scraping nos termos de uso ou num arquivo chamado robots.txt. Antes de rodar um crawl grande, confira se o site permite e evite pedir volume maior do que você precisa de verdade.

✓ Fazer

  • Pedir só as páginas que você realmente precisa
  • Checar se o site permite scraping antes de um crawl grande

✗ Evitar

  • Fazer crawl do site inteiro "só pra ver"
  • Ignorar avisos de bloqueio ou de limite excedido

O robots.txt é um arquivo simples que sites publicam na raiz do endereço (algo como exemplo.com/robots.txt) dizendo o que pode e o que não pode ser acessado por robôs automáticos — o Firecrawl costuma respeitar essas regras sozinho, mas vale saber que elas existem, porque explicam por que às vezes uma parte do site simplesmente não retorna nada. Se o dado que você quer envolve informação pessoal de terceiros (nomes, e-mails, telefones de pessoas físicas), trate com o mesmo cuidado que trataria qualquer outro dado sensível: pergunte se você realmente precisa daquele campo antes de incluí-lo no CSV, e nunca redistribua esse tipo de dado sem necessidade.

💡 Dica Prática

Se um crawl grande vier pela frente, comece com um pedido pequeno (5-10 páginas) pra validar que o formato do CSV saiu como você queria — só depois amplie pro volume total. Corrigir um pedido pequeno é rápido; refazer um crawl gigante por causa de um campo errado, não.

6

🗓️ Repetindo o build em outro site

Uma vez que o servidor MCP e o cheat sheet estão prontos, repetir esse build em outro site é só trocar o endereço e os campos desejados no pedido — o resto do fluxo (map → extract → CSV, com fallback pra scrape) já está ensinado. É o tipo de trabalho que compensa automatizar de verdade — assunto que a Trilha 4 (Deploy) vai levar adiante.

Novo aqui? "Automatizar" aqui significa deixar essa mesma rotina rodar sozinha, sem você precisar copiar e colar o pedido de novo — por exemplo, gerar o CSV atualizado toda segunda de manhã. Este módulo te dá o build manual, sob demanda; a Trilha 4 ensina a colocar esse mesmo pedido numa agenda fixa, rodando num servidor, sem depender do seu laptop ligado. Pense nesse módulo como o protótipo que prova que o pedido funciona — só depois de validado é que vale a pena investir tempo em automatizá-lo de verdade.

💡 Dica Prática

Guarde o pedido do passo 3 num arquivo de notas — na próxima vez, você só troca o endereço do site e os campos, sem reescrever tudo do zero.

Resumo do Módulo

scrape: 1 página. map: lista URLs. crawl: várias páginas. extract: campos organizados.
Build: map + extract é a combinação mais comum pra virar CSV.
Extract vazio: simplifique o esquema, depois caia pro scrape bruto — só então reporte falha.
Educação: respeite cota e robots.txt; peça só o volume necessário.

Próximo módulo:

2.6 — Vários agentes em paralelo