Como Extrair e Filtrar Dados de Produtos da Amazon com Python

Aprenda a criar um scraper em Python para filtrar e extrair dados de produtos da Amazon, gerando relatórios consolidados em planilhas sem retrabalho.

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:

  1. Requisição Segura e Otimizada: Utilização de bibliotecas como httpx ou requests com headers customizados, simulando navegadores modernos.
  2. Parsing Estruturado: Extração seletiva usando BeautifulSoup ou Selectolax (preferível por seu alto desempenho com grandes volumes de HTML).
  3. 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.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.