O @afilimax/amazon-scraper é uma biblioteca poderosa e resiliente para extração de dados de produtos da Amazon, focada especialmente no marketplace brasileiro (Amazon.com.br). Construída sobre o ecossistema @xcrap, ela oferece um sistema híbrido de requisições que maximiza a velocidade e a taxa de sucesso.
- 🔄 Sistema Híbrido Resiliente: Utiliza
GotScrapingClientpor padrão para máxima velocidade. Se um CAPTCHA for detectado, a biblioteca muda automaticamente para oPuppeteerExtraClient(browser real) para resolver o desafio e obter os dados. - 🛡️ Evasão de Bots: Integra
StealthPlugineAmazonCaptchaPluginpara minimizar bloqueios. - 📊 Dados Estruturados: Extrai títulos, preços, imagens, avaliações, especificações técnicas, disponibilidade e informações de frete.
- 🧩 Baseado em @xcrap: Utiliza modelos de extração e transformação declarativos, facilitando a manutenção.
- 📦 Tipagem TypeScript: Totalmente escrito em TypeScript com definições de tipos para todos os retornos.
npm install @afilimax/amazon-scraperNota: Certifique-se de ter as dependências do @afilimax/core devidamente configuradas se estiver usando em um ambiente monorepo.
import { AmazonScraper } from '@afilimax/amazon-scraper';
async function run() {
// Inicializa o scraper
const scraper = new AmazonScraper({
quiet: false // Define se deve exibir logs no console
});
try {
const url = 'https://www.amazon.com.br/dp/B08P2B889P';
// Obtém os dados do produto
const product = await scraper.getProduct({ url });
console.log('Dados do Produto:', JSON.stringify(product, null, 2));
} catch (error) {
console.error('Erro ao extrair produto:', error);
} finally {
// Importante fechar o browser (Puppeteer) se ele tiver sido aberto
await scraper.close();
}
}
run();Você pode passar opções customizadas para o Puppeteer ou para o cliente de requisições HTTP (Got):
const scraper = new AmazonScraper({
puppeteer: {
headless: true,
args: ['--no-sandbox']
},
gotScraping: {
// Opções do got-scraping
},
quiet: true
});puppeteer: Opções para oPuppeteerExtraClient.gotScraping: Opções para oGotScrapingClient.quiet: Setrue, desativa os logs de depuração.
Extrai todos os dados de um produto a partir de uma URL. Faz a limpeza automática de parâmetros de rastreamento da Amazon antes da extração.
Obtém apenas o parser HTML da página. Útil se você precisar fazer extrações manuais específicas usando @xcrap/extractor.
Fecha as instâncias abertas do browser. Sempre chame este método ao finalizar o uso.
O método getProduct retorna um objeto seguindo o scrapedProductSchema do @afilimax/core, contendo:
title: Título do produto.price: Preço atual (normalizado).description: Descrição detalhada.images: Array de URLs das imagens em alta resolução.brand: Marca do produto.rating: Objeto com média e total de avaliações.specifications: Lista de especificações técnicas.features: Características principais.availability: Status de estoque.shipping: Informações de frete estimadas.scrapedAt: Timestamp da extração.
Este projeto é focado no marketplace brasileiro. Se você deseja adicionar suporte para outros idiomas ou marketplaces regionais da Amazon, sinta-se à vontade para abrir uma issue ou enviar um Pull Request.
- Clone o repositório.
- Instale as dependências:
npm install. - Execute os testes:
npm test.
Distribuído sob a licença MIT. Veja LICENSE para mais informações.