Como Extrair Dados de Produtos da Loja Virtual com N8N: Web Scraping Automatizado

Extrair Dados de Produtos

Aprenda como extrair dados de produtos que aparecem em grade na vitrine de uma loja virtual é uma necessidade comum para quem quer monitorar preços, atualizar catálogos, comparar concorrentes ou alimentar painéis internos. Com o n8n, um orquestrador de automações open-source, é possível montar um fluxo robusto para capturar esses dados diretamente do HTML da página, padronizar, validar, armazenar e até acionar alertas — tudo sem precisar escrever um sistema do zero. Neste artigo, usando como referência o tema “Extraindo Dados dos Produtos em Grade da Loja Virtual com N8N”, vamos explorar um passo a passo completo, boas práticas e estratégias para lidar com diferentes cenários do e-commerce moderno.

Créditos do vídeo: Bruno Devx | BR Criativus

Por que usar n8n para extrair dados de produtos

O n8n permite montar automações visuais conectando nós (nodes) que fazem requisições HTTP, extraem e transformam informações, tomam decisões condicionais, registram logs e enviam dados para planilhas, bancos de dados ou APIs. Para quem precisa extrair dados de uma grade de produtos, isso significa:

  • Zero dependência de códigos complexos: você monta o fluxo arrastando e configurando nós.
  • Escalabilidade: fácil replicar o fluxo para várias categorias, lojas ou marcas.
  • Confiabilidade: você agenda execuções, trata erros e notifica incidentes.
  • Integração: dos dados brutos à camada final (Google Sheets, Airtable, MySQL, Notion, BigQuery ou APIs), tudo num só pipeline.

Entendendo a “grade” de produtos

Em geral, páginas de categoria, busca ou destaques exibem os produtos em cards repetidos. Cada card costuma conter:

  • Nome do produto
  • Preço atual e, às vezes, preço anterior (promoção)
  • Imagem principal
  • Link para a página do produto
  • SKU, código ou identificador interno (quando visível)
  • Selo ou tag (novo, promoção, frete grátis, Black Friday, etc.)
  • Disponibilidade (em estoque, indisponível, variações)

Esses dados normalmente estão acessíveis no HTML via seletores CSS (como classes e atributos) ou em data attributes (ex: data-sku=”…”). Em alguns casos, a página injeta JSON no código-fonte (scripts do tipo application/ld+json ou blocos inline). Em lojas que renderizam conteúdo dinamicamente via JavaScript, pode ser necessário usar um navegador headless para “ver” o HTML final.

Arquitetura do fluxo no n8n

Antes de clicar e arrastar nós, planeje a arquitetura. Um fluxo típico inclui:

  • Entrada de URLs: lista de categorias/páginas onde a grade está.
  • Captura do HTML: via HTTP Request ou Browser (quando há JS pesado).
  • Extração estruturada: usando um node de extração por seletores.
  • Limpeza e padronização: normalização de texto, moeda, números e links.
  • Paginação: seguir para a próxima página até não existirem mais resultados.
  • Deduplicação: evitar criar registros duplicados entre execuções.
  • Persistência: salvar em planilha, banco ou enviar a uma API.
  • Observabilidade: logs, notificações e tratamento de erros.
  • Agendamento: execução recorrente com Cron (diário, horário de pico, etc.).

Passo a passo de como extrair dados de produtos com n8n

1) Defina os objetivos e os campos

Liste exatamente o que você precisa extrair e onde pretende salvar. Por exemplo:

  • Campos: título, preço, preço_anterior, link, imagem, sku, disponibilidade, categoria, data_captura.
  • Destino: Google Sheets para análise rápida e um banco MySQL para histórico.
  • Periodicidade: 2 vezes por dia.

2) Preparando a entrada de URLs

Você pode alimentar o fluxo com uma lista fixa de URLs (ex: páginas de categorias) usando um nó de dados estáticos, uma planilha de controle ou um banco. Isso permite escalar o mesmo fluxo para 10, 50 ou 200 páginas diferentes, sem duplicar o trabalho.

3) Captura do HTML

Em páginas estáticas, o HTTP Request costuma ser suficiente. Configure:

  • Método GET
  • User-Agent realista (algumas lojas bloqueiam agentes genéricos)
  • Timeout adequado e número de tentativas (retry)
  • Respeito a robots.txt e termos de uso

Se a página carrega produtos via JavaScript depois do carregamento inicial, use um nó de Browser (navegador headless) para renderizar a página, esperar os elementos de produto aparecerem e então extrair o HTML já processado.

4) Extração de dados da grade

Com o HTML em mãos, utilize um nó de extração por seletores (por exemplo, um parser que aceite CSS). A ideia é selecionar o “card” do produto e, dentro dele, buscar:

  • Seletor do título (ex: .product-card .title)
  • Seletor do preço (ex: .price .amount)
  • Seletor do preço anterior (ex: .price .old)
  • Seletor do link (ex: .product-card a)
  • Seletor da imagem (ex: .product-card img)
  • Seletor do SKU (quando disponível) ou data-attributes
  • Flag de disponibilidade (ex: .badge.out-of-stock)

Dicas práticas:

  • Comece inspecionando o HTML no navegador para encontrar seletores estáveis.
  • Prefira atributos consistentes; evite classes puramente utilitárias que mudam com frequência.
  • Se a loja tiver JSON-LD com dados do produto, pode ser mais confiável parseá-lo.

5) Normalização e enriquecimento

Na etapa de transformação, padronize e enriqueça os dados para facilitar análises e integrações:

  • Preço: converta vírgula para ponto, remova símbolos e extraia números.
  • Título: aplique trim, capitalize se precisar, remova caracteres especiais desnecessários.
  • Links: transforme URLs relativas em absolutas.
  • Categoria: inclua o nome da categoria de origem como metadado.
  • Data/Hora: salve um timestamp ISO (ex: 2025-09-02T01:57:29Z).
  • Disponibilidade: normalize para “em_estoque”/“indisponível”.

Se desejar, calcule campos derivados, como “desconto_percentual” com base no preço atual e anterior.

6) Paginação automática

Grande parte das grades utiliza paginação. Duas abordagens comuns:

  • Seguir o link “Próxima página”: após extrair a grade da página atual, procure o seletor do botão/link “Próxima” e, se existir, avance.
  • Mudar o parâmetro da URL: muitas lojas usam page=2, page=3… Você pode iterar esse parâmetro enquanto ainda encontrar produtos.

Controle de parada:

  • Se não houver link “Próxima”, pare.
  • Se a página retornou zero produtos, finalize.
  • Defina um limite de segurança de páginas para evitar loops infinitos.

7) Deduplicação

Para evitar duplicar registros a cada execução:

  • Gere um identificador único (ex: hash do link do produto + loja).
  • Antes de salvar, verifique se o ID já existe no destino (planilha/DB).
  • Mantenha um repositório de “vistos” (cache em Redis, tabela de controle ou coluna de status na planilha).

8) Persistência dos dados

Escolha onde os dados vão viver:

  • Google Sheets: ótimo para visualização rápida e validações manuais.
  • Airtable: combina planilha e banco, com visualizações e automações.
  • MySQL/PostgreSQL: recomendado para histórico, queries avançadas e integração com BI.
  • Notion: útil para equipes que preferem um hub de documentação/dados.
  • APIs: enviar para um endpoint próprio, ou integrar com ERPs e CRMs.

Se a intenção for alimentar um catálogo no WordPress/WooCommerce, você pode:

  • Usar a API REST do WooCommerce para criar/atualizar produtos.
  • Manter uma camada staging (planilha/DB) e só publicar após revisão.

9) Observabilidade e notificações

Automação boa é automação observável. Considere:

  • Enviar um resumo das capturas para Slack/Telegram (ex: total de produtos, novas promoções, erros).
  • Registrar logs de URLs processadas, tempo de execução e contagem de itens.
  • Separar erros por tipo (timeout, seletor quebrado, bloqueio da loja) para diagnósticos rápidos.

10) Agendamento

Com o nó de agendamento, defina quando o fluxo deve rodar. Dicas:

  • Evite horários de pico de tráfego da loja, para reduzir bloqueios e melhorar desempenho.
  • Se necessário, faça varreduras mais leves com maior frequência (coleta incremental).

Quando usar navegador headless

Algumas vitrines carregam os produtos via JavaScript, sem HTML estático completo. Nestes casos, o HTTP Request não basta. Use um nó de Browser para:

  • Carregar a página como um navegador real (com User-Agent, cookies e execução de JS).
  • Esperar o seletor da grade aparecer (ex: .product-grid .product-card).
  • Extrair o HTML já renderizado e então aplicar os seletores de dados.

Dicas para estabilidade:

  • Defina timeouts realistas e espere elementos específicos, não apenas o carregamento de documento.
  • Simule rolagem quando a paginação for infinita (infinite scroll), coletando em lotes a cada “scroll”.
  • Reduza a taxa de requisições e intercale com pequenos delays para evitar bloqueios.

Qualidade e conformidade dos dados

Ao lidar com diversas lojas e templates diferentes, a qualidade dos dados pode variar. Adote padrões claros:

  • Validação de campos obrigatórios (título, preço, link) com descarte ou marcação de registros incompletos.
  • Normalização de moeda e formato numérico (R$, separadores de milhar e decimal).
  • Uniformização de disponibilidade (ex: “Disponível”, “Esgotado”, “Sob encomenda”).
  • Padronização de imagens: garantir links absolutos em HTTPS e tamanhos aceitáveis.

Escalabilidade e performance

Se você pretende capturar centenas de páginas ou milhares de produtos:

  • Implemente fila: processe URLs em lotes (batches) para controlar paralelismo.
  • Cache: se a loja tem CDN forte, respalde com ETags/Last-Modified quando possível.
  • Backoff exponencial: ao detectar bloqueios ou muitos erros 429, aumente o intervalo entre requisições.
  • Armazenamento incremental: salve em “streaming”, não tudo ao final, para não perder dados em falhas.

Erros comuns e como evitar

  • Seletores frágeis: dependem de classes temporárias; prefira seletores mais semânticos ou data attributes.
  • Ignorar paginação: extrair só a primeira página subestima totalmente o catálogo.
  • Não tratar variações: preço e disponibilidade podem mudar por variação de cor/tamanho; entenda o que sua análise exige.
  • Falta de deduplicação: gera planilhas “infladas” e dificulta histórico.
  • Não versionar o fluxo: mudanças na loja exigem ajustes; mantenha versões do seu workflow e comentários.

Ética e legalidade

Antes de extrair dados, verifique os termos de uso do site e o arquivo robots.txt. Em muitos casos, a coleta de informações exibidas publicamente para fins de análise é tolerada, desde que não sobrecarregue a infraestrutura nem viole restrições contratuais. Boas práticas:

  • Respeite limites de requisição e implemente rate limiting.
  • Identifique-se apropriadamente no User-Agent quando aplicável.
  • Evite contornar mecanismos de proteção que indiquem restrição clara.
  • Proteja dados coletados e cumpra a legislação aplicável (LGPD, quando envolver dados pessoais).

Do HTML ao seu WordPress

Se o objetivo final é alimentar um site WordPress (com ou sem WooCommerce), o n8n pode fazer a ponte:

  • Para catálogos: integrar com a API do WordPress para criar posts personalizados (CPT) com campos avançados.
  • Para e-commerce: utilizar a API do WooCommerce para criar/atualizar produtos, preços e estoque.
  • Para conteúdo editorial: transformar a coleta em pautas, listas ou comparativos de preço.

Recomendação prática: mantenha um “hub” de dados (planilha ou DB) entre a coleta e o WordPress. Isso cria uma camada de segurança e revisão, evitando publicar itens errados ou incompletos.

Exemplo de fluxo resumido

  • Start: Cron diário às 06h e 18h.
  • Input: lista de URLs de categorias (planilha).
  • Loop: para cada URL, capturar o HTML (HTTP Request ou Browser).
  • Extract: selecionar os cards e extrair campos necessários.
  • Transform: normalizar preços, links e disponibilidade.
  • Paginate: avançar enquanto houver próxima página.
  • Deduplicate: checar em DB se o item já existe (ID único por link+loja).
  • Persist: salvar em Google Sheets e MySQL.
  • Notify: enviar resumo no Slack/Telegram.
  • End: registrar métricas da execução.

Como testar e validar

Não jogue o fluxo direto em produção. Faça testes com poucas páginas e valide:

  • Se o número de produtos por página confere.
  • Se os preços batem com a vitrine (atenção a promoções e parcelamentos).
  • Se os links abrem a página correta do produto.
  • Se a paginação cobre todo o catálogo, sem pular páginas.

Crie casos de teste: páginas com promoções, com variações, esgotados, e até páginas vazias. Anote os ajustes de seletores e regras de transformação que surgirem nessa etapa.

Checklist rápido para iniciar hoje

  • Mapeie 3 a 5 categorias da sua loja ou do mercado-alvo.
  • Inspecione o HTML e registre seletores de título, preço, link e imagem.
  • Monte um fluxo simples com captura, extração e envio para planilha.
  • Acrescente paginação e normalização de dados.
  • Implemente deduplicação e um alerta simples de resumo.
  • Agende e monitore por uma semana, fazendo ajustes incrementais.

Conclusão

Extrair dados dos produtos em grade de uma loja virtual com o n8n é uma combinação poderosa de praticidade e flexibilidade. Você consegue transformar páginas públicas em dados estruturados, prontos para alimentar análises, atualizar catálogos, comparar preços e gerar insights de negócio — tudo com um fluxo visual, versionável e escalável.

Se quiser ver na prática como aplico automações e transformar ideias em resultados, confira também meu trabalho real em projetos web e e-commerce. Visite meu portfólio para conhecer cases, layouts e soluções que podem elevar o nível do seu site.

E você, já tentou extrair dados de uma grade de produtos com alguma automação? Qual foi o maior desafio que encontrou (seletor instável, paginação, bloqueios) e o que gostaria de ver detalhado num próximo conteúdo?

Está gostando do conteúdo? Compartilhe!
Nenhum anúncio encontrado...

Esta gostando do conteúdo?

Cadastre-se em nossa lista para receber mais conteúdos como estes direto no seu WhatsApp

Seu nome *
E-mail *
WhatsApp *