Exemplo guiado

madeiramadeira.com.br

Este caso foi mais difícil do que uma categoria estável de e-commerce. A página mistura blocos editoriais, vitrines e produtos, então o automático precisou separar o card certo, impedir que imagem virasse nome e alinhar preço e URL no mesmo item antes de chegar à planilha.

e-commerce difícilgrid editorial misturadamodo automático com IA

Objetivo

Extrair móveis para Excel

  • nome
  • preco
  • url

URL alvo:

www.madeiramadeira.com.br/moveis

O que tornou o caso difícil

O card de produto não era o único repetido da página

O automático já conseguia entender que era uma lista de produtos, mas a página trazia camadas internas suficientes para confundir container, preço e URL. O problema deixou de ser só HTML e virou alinhamento estrutural do item real.

Foi necessário reforçar a descoberta do container, endurecer a semântica do campo nome, filtrar matches inválidos de preco e deduplicar a saída por url.

Linha do tempo

Como o caso foi fechado

1. Mistura de cards editoriais e cards de produto

A categoria de móveis não era uma grade simples. A página combinava blocos editoriais, cards de categoria e cards de produto, então o automático precisava separar o container certo antes de qualquer selectorHint útil aparecer.

2. Nome contaminado por imagem e wrappers amplos

Na primeira leitura ruim, o campo nome podia virar payload de imagem ou seletor amplo demais. O motor passou a bloquear data:image como nome e a preferir h2 real do produto quando ele existe no card.

3. Preço e URL desalinhados pelo excesso de matches internos

O card tinha mais de um bloco interno parecido com preço. O motor passou a descartar matches que não coerem para o tipo real do campo, a usar âncora mais estável no list e a deduplicar a saída por URL.

Schema final

Campos que fecharam o caso

Nome do campo: nome

Tipo: string

Descrição: Nome do produto no card da listagem

Hint de seletor: div.cav--c-eNhzRw.cav--c-eNhzRw-fyOwyl-sm-6.cav--c-eNhzRw-dDYtoX-md-3 h2.overflow_hidden.text-overflow_ellipsis.d_-webkit-box

Nome do campo: preco

Tipo: number

Descrição: Preço final do produto no card da listagem

Hint de seletor: div.cav--c-eNhzRw.cav--c-eNhzRw-fyOwyl-sm-6.cav--c-eNhzRw-dDYtoX-md-3 div.d_flex.box_border-box.flex_column div.d_flex.box_border-box.flex_column

Nome do campo: url

Tipo: url

Descrição: URL do produto no card da listagem

Hint de seletor: div.cav--c-eNhzRw.cav--c-eNhzRw-fyOwyl-sm-6.cav--c-eNhzRw-dDYtoX-md-3 a.flex_column.d_flex.pos_relative

Resultado final

Quando considerar a categoria resolvida

  • o modo deve sair como list
  • a saída deve vir com uma linha por produto, sem duplicação por URL
  • nome, preco e url devem sair preenchidos
  • a planilha deve abrir pronta para uso sem revisão manual

O que este caso ensinou

Regras práticas para grids mistos

Nem todo card repetido é card de produto

Em marketplaces e lojas mais editoriais, o seletor mais repetido pode apontar para categoria, carrossel ou wrapper genérico. O detector de container precisa entender link de produto, heading e sinal de preço ao mesmo tempo.

Imagem pode ter nome bom, mas não deve mandar no schema

O alt da imagem ajudou como fallback, mas o resultado final ficou mais confiável quando o Intelbot passou a preferir o h2 do card como nome principal.

Deduplicar por URL salva a planilha final

Mesmo com selectorHint correto, a mesma URL pode aparecer mais de uma vez quando a página repete vitrines internas. A saída final passou a manter a linha mais completa de cada produto.