Extraia dados de uma página web para JSON
Uma página cheia de produtos bagunçados, e um arquivo JSON limpo com o nome e o preço de cada um. Sem scraper feito à mão. Você descreve para o Firecrawl em uma frase e ele devolve estruturado.
Fazer scraping de uma página à mão é frágil: você escreve seletores, a página muda, quebra. O Firecrawl inverte isso: você diz em linguagem comum quais dados quer e um agente lê a página e devolve em JSON. Vamos puxar uma lista de produtos de uma loja, mas funciona para qualquer dado: preços, anúncios, diretórios, perfis.
Por que isso aguenta onde um scraper normal não aguenta: um scraper feito à mão depende da
estrutura exata da página, então no dia em que renomeiam uma classe, ele quebra. O agente lê a
página do jeito que você leria, pelo significado. Mude o layout e ele ainda acha o preço,
porque você pediu "o preço", não div.col-3 > span.amount.
1. Instale a CLI e faça login
O Firecrawl tem uma ferramenta de linha de comando. Instale com o Node e autentique:
npm install -g firecrawl-cli
Confira se está pronto. Se faltar a chave, o comando te guia para criá-la em
firecrawl.dev
(o plano gratuito te dá créditos de sobra para começar). Guarde num
.env como qualquer outra chave, nunca no código: está explicado em
sua primeira chave de API, sem vazar.
firecrawl --status
● Authenticated
Credits: 500,000 remaining 2. Primeiro, veja o que tem na página
Antes de extrair qualquer coisa, faça scraping da página para ver o conteúdo limpo. Isso devolve a página em markdown, sem menus, sem ruído:
firecrawl scrape https://example-shop.com/products -o page.md
Abra o page.md e confira se os dados que você quer estão ali. Se
aparecem, o agente vai conseguir extraí-los.
3. Peça os dados como JSON
Agora a parte boa. O comando agent recebe uma frase com o que
você quer e a URL, e devolve JSON. --wait espera ele terminar e
--pretty deixa legível:
firecrawl agent "extract each product with its name and price" \
--urls https://example-shop.com/products \
--wait --pretty -o products.json E o products.json sai assim, pronto para usar em qualquer lugar:
[
{ "name": "Nordic Chair", "price": 89.00 },
{ "name": "Oak Table", "price": 240.00 },
{ "name": "Floor Lamp", "price": 65.50 }
] 4. Quer mais precisão? Dê um schema
A frase basta para a maioria dos casos. Se você precisa que os campos saiam
exatos toda vez (mesmos nomes, mesmos tipos), passe um schema com
--schema:
firecrawl agent "extract the products" \
--urls https://example-shop.com/products \
--schema '{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"}}}}' \
--wait --pretty -o products.json Quando algo quebra
Os tropeços de sempre, e a solução de cada um:
- "command not found: firecrawl". O Node não está instalado, ou a instalação global não pegou. Veja instalar o Node, depois rode a linha de instalação de novo.
- 401 ou "out of credits". A chave não está configurada, ou você gastou os créditos gratuitos. Guarde-a do jeito certo (sua primeira chave de API, sem vazar) e confira seu painel.
- Faltam campos no JSON. A frase foi vaga demais. Nomeie os campos com exatidão, ou passe um
--schemacomo no passo 4. - Não retornou nada. Os dados carregam depois de um clique ou de um login, então não estavam na página que o agente leu. Abra o
page.mddo passo 2: se não está lá, o agente também não consegue ver.
Agora tente isto
Mesmo comando, mais alcance:
- Várias páginas de uma vez. Passe mais de uma URL no
--urlse ele junta tudo num arquivo só. - Acompanhe os preços de um concorrente. Aponte para a loja dele, guarde o JSON e compare na semana que vem.
- Faça rodar sozinho. Coloque isso numa tarefa agendada e receba dados frescos toda manhã sem mexer um dedo.
- Mande para algum lugar. O JSON cai direto numa planilha, num banco de dados, ou no próximo passo de uma automação.
O que você acabou de fazer
Você transformou uma página web em dados que pode usar, sem escrever ou manter um scraper. O que você pediu foram produtos, mas o mesmo comando puxa os preços de um concorrente, os anúncios de um diretório, ou qualquer dado que apareça numa página. O trabalho deixou de ser programar o scraper; agora é só dizer o que você quer.
Deixe seu e-mail e eu te aviso quando o próximo build sair, com o código e os prompts que usei. Sem spam.
Mais tutoriais ↗