Monitorar catálogos extensos de e-commerce é uma tarefa rotineira para quem precisa analisar concorrência, precificação e sortimento. No entanto, coletar manualmente centenas de páginas de anúncios na Amazon — principalmente cruzando múltiplos filtros, como faixas de preço específicas e avaliações mínimas — consome tempo valioso e gera dados inconsistentes. A solução para essa demanda é estruturar um pipeline automatizado de raspagem e consolidação de dados usando Python.
O Desafio da Coleta com Filtros Combinados
Grandes marketplaces aplicam mecanismos dinâmicos de renderização e estruturas de URL complexas. Quando um projeto exige a filtragem simultânea por dois ou mais critérios (por exemplo, produtos com avaliação superior a 4 estrelas dentro de uma faixa de preço delimitada), o coletor precisa aplicar esses parâmetros diretamente na query de busca ou realizar uma filtragem determinística no pós-processamento.
Além disso, raspagens em grande escala na Amazon exigem atenção à consistência de cabeçalhos HTTP, rotação de User-Agents e gestão adequada de requisições para evitar interrupções de conexão.
Arquitetura da Solução em Python
Para construir um scraper robusto e rápido, a abordagem recomendada divide-se em três etapas:
- Requisição Segura e Otimizada: Utilização de bibliotecas como
httpxourequestscom headers customizados, simulando navegadores modernos. - Parsing Estruturado: Extração seletiva usando
BeautifulSoupouSelectolax(preferível por seu alto desempenho com grandes volumes de HTML). - Validação de Filtros e Consolidação: Aplicação de regras condicionais nos campos capturados e exportação para planilhas limpas com
pandas.
Exemplo Prático de Extração e Validação
O código abaixo ilustra a extração de dados essenciais (título, preço, avaliação) e a aplicação de filtros condicionais antes de estruturar a planilha final:
python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
HEADERS = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36”,
“Accept-Language”: “pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7”
}
def parselisting(htmlcontent, precomax, avaliacaomin):
soup = BeautifulSoup(html_content, ‘html.parser’)
produtos = []
# Localiza os cards de produtos padrão da busca
cards = soup.select('div[data-component-type="s-search-result"]')
for card in cards:
titulo_elem = card.select_one('h2 a span')
preco_inteiro = card.select_one('.a-price-whole')
preco_fracao = card.select_one('.a-price-fraction')
avaliacao_elem = card.select_one('i.a-icon-star-small span')
if not (titulo_elem and preco_inteiro):
continue
titulo = titulo_elem.get_text(strip=True)
# Normalização do preço
fracao = preco_fracao.get_text(strip=True) if preco_fracao else '00'
preco_str = f"{preco_inteiro.get_text(strip=True)}.{fracao}".replace(',', '')
try:
preco = float(preco_str)
except ValueError:
continue
# Normalização da avaliação (ex: '4,5 de 5 estrelas')
avaliacao = 0.0
if avaliacao_elem:
match = re.search(r'([0-9],[0-9])', avaliacao_elem.get_text())
if match:
avaliacao = float(match.group(1).replace(',', '.'))
# Aplicação dos filtros condicionais
if preco <= preco_max and avaliacao >= avaliacao_min:
produtos.append({
'Titulo': titulo,
'Preco': preco,
'Avaliacao': avaliacao,
'ASIN': card.get('data-asin', '')
})
return produtos
def exportarrelatorio(produtos, caminhoarquivo):
df = pd.DataFrame(produtos)
df.toexcel(caminhoarquivo, index=False)
print(f”{len(df)} produtos salvos com sucesso em {caminho_arquivo}.”)
Otimizações para Pipelines Críticos
Como especialista em IA e engenharia de dados, frequentemente implemento camadas adicionais para cenários de grande volume. Isso inclui filas assíncronas com Playwright ou Scrapy para lidar com paginação contínua, detecção de variações de layout e modelos de Processamento de Linguagem Natural (PLN) para normalizar títulos de produtos divergentes.
Próximos Passos
Transformar a coleta manual de marketplaces em um fluxo de dados limpo, consolidado e direto para planilhas economiza dezenas de horas de trabalho operacional. Se a sua empresa busca automatizar a extração de dados complexos ou estruturar rotinas analíticas sem interrupções técnicas, considere uma consultoria técnica especializada para desenvolver pipelines sob medida.


