Como Extrair Dados JSON de E-commerce e Exportar para Excel com Python
Monitorar catálogos de concorrentes, analisar variações de preços e consolidar informações de produtos são tarefas rotineiras para equipes de inteligência de mercado. No entanto, fazer isso de forma manual é inviável, e realizar raspagens baseadas puramente no HTML renderizado costuma gerar scripts lentos e frágeis a alterações visuais.
A maioria dos e-commerces modernos consome APIs internas que trafegam dados estruturados em formato JSON diretamente para o front-end. Mapear e consumir esses endpoints garante um fluxo de dados mais rápido, resiliente e limpo. A seguir, entenda como estruturar uma solução profissional em Python para coletar esses dados e convertê-los em relatórios operacionais no Excel.
1. Mapeando Endpoints JSON em E-commerces
Em vez de inspecionar elementos do DOM para coletar tags HTML, o primeiro passo consiste em abrir as ferramentas de desenvolvedor do navegador (DevTools), navegar até a aba Network (Rede) e filtrar por requisições do tipo Fetch/XHR.
Ao navegar pelas páginas de produto ou categorias, você identificará chamadas que retornam objetos JSON contendo atributos completos: SKUs, preços originais, preços promocionais, estoque, especificações técnicas e URLs de imagens. Essa abordagem reduz drasticamente o consumo de banda e elimina a necessidade de parsers pesados como BeautifulSoup ou Selenium.
2. Estrutura do Pipeline em Python
Para garantir legibilidade, manutenção e performance, o código deve ser modular. Uma boa prática inclui:
- Camada de Extração (
requester): Responsável por lidar com cabeçalhos HTTP, rotação de User-Agents e controle de taxas de requisição. - Camada de Transformação (
parser): Normaliza o JSON (frequentemente aninhado) em estruturas tabulares. - Camada de Armazenamento (
exporter): Escreve os registros consolidados em arquivos.xlsxformatados.
Exemplo Prático de Implementação
python
import requests
import pandas as pd
class EcommerceScraper:
def init(self, baseurl: str, headers: dict = None):
self.baseurl = base_url
self.headers = headers or {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36”
}
def fetch_products(self, endpoint: str) -> list:
"""Executa a requisição e retorna a lista de produtos."""
url = f"{self.base_url}/{endpoint}"
response = requests.get(url, headers=self.headers, timeout=10)
response.raise_for_status()
data = response.json()
# Supondo uma estrutura onde os produtos estejam sob a chave 'items'
return data.get("items", [])
def transform_data(self, raw_items: list) -> pd.DataFrame:
"""Achata estruturas aninhadas e seleciona campos essenciais."""
flattened = []
for item in raw_items:
flattened.append({
"ID": item.get("id"),
"Título": item.get("name"),
"Marca": item.get("brand", {}).get("name"),
"Preço Regular": item.get("pricing", {}).get("original_price"),
"Preço Promocional": item.get("pricing", {}).get("current_price"),
"Disponibilidade": item.get("inventory", {}).get("in_stock", False)
})
return pd.DataFrame(flattened)
def export_to_excel(self, df: pd.DataFrame, filename: str = "produtos.xlsx"):
"""Exporta o DataFrame para um arquivo Excel com tipagem correta."""
df.to_excel(filename, index=False, engine="openpyxl")
print(f"Dados gravados com sucesso em {filename}")
if name == “main“:
# Exemplo de execução
BASEURL = “https://api.lojaexemplo.com/v1”
scraper = EcommerceScraper(baseurl=BASE_URL)
dados_brutos = scraper.fetch_products("catalogo/produtos?pagina=1")
dataframe = scraper.transform_data(dados_brutos)
scraper.export_to_excel(dataframe, "produtos_ecommerce.xlsx")
3. Boas Práticas Técnicas e Resiliência
Como especialista em automação e engenharia de dados, recomendo focar em quatro pilares para soluções de produção:
- Tratamento de Exceções e Retries: Plataformas de e-commerce podem falhar temporariamente ou retornar limites de requisições (códigos HTTP 429 ou 503). Utilize a biblioteca
tenacityou adaptadores de transporte dourllib3para configurar retentativas com recuo exponencial (exponential backoff). - Normalização de Dados JSON: Estruturas aninhadas complexas podem ser processadas diretamente com
pd.json_normalize(), acelerando o pré-processamento sem a necessidade de múltiplos loops manuais. - Higienização e Tipagem: Converta campos numéricos e datas antes de descarregar os dados no arquivo final. Isso evita que números sejam interpretados como texto no Excel, facilitando cálculos posteriores.
Conclusão e Próximos Passos
A extração via endpoints JSON diretos é a forma mais sólida e econômica de obter dados de e-commerce para alimentar planilhas e sistemas de BI. Um código limpo e arquitetado com foco em modularidade permite que a rotina seja facilmente automatizada em nuvem ou conectada a pipelines contínuos de monitoramento.
Se a sua empresa precisa estruturar fluxos avançados de captura de dados, integrar pipelines inteligentes de dados ao seu ecossistema ou criar automações com inteligência artificial para monitoramento de concorrência, entre em contato para uma consultoria técnica especializada com Thiago Programador.


