Raspador que abre cada URL de produto, insere CEPs (lista em src/utils/ceps.py), consulta frete/prazo na página e salva tudo em src/raspagem/bd.xlsx. Usa Playwright (API síncrona) para automação do navegador e pandas + openpyxl para exportar Excel.
Atenção: o código contém vários
# Preencher o Xpath. Você mesmo deve preencher com os seletores corretos.
README.md
LICENSE
src/
├── app.py
├── README.md
├── requirements.txt
└── utils/
├── ceps.py # dicionário ceps_gerais = {...}
└── urls.py # lista urls_produtos = [...]
Observação: a pasta
src/raspagem/será criada ao rodar o script (ou você pode criá-la manualmente antes da execução).
As dependências já estão em src/requirements.txt:
playwright
pandas
openpyxl
- Crie e ative virtualenv na raiz do projeto:
- Linux/macOS:
python -m venv venv source venv/bin/activate - Windows:
python -m venv venv venv\Scripts\activate
- Linux/macOS:
- Instale dependências:
pip install -r src/requirements.txt
- Instale navegadores do Playwright:
playwright install
- Execute o script:
python src/app.py
Se preferir, também funciona executar a partir de src/:
cd src
python app.pyDefina variáveis para facilitar manutenção:
HEADLESS = False # True para rodar sem abrir navegador
NAV_TIMEOUT = 25000 # Timeout em ms para navegação
SHORT_WAIT = 1 # Delay em segundos entre ações
LONG_TIMEOUT = 10000 # Timeout para espera de elementos
OUTPUT_PATH = "src/raspagem/bd.xlsx"- Abra a página alvo no navegador.
- Use DevTools (F12) → inspect → clique com botão direito no elemento → Copy → Copy selector (ou Copy XPath).
- Cole os seletores nos lugares marcados no código (
page.fill(),page.click(),page.wait_for_selector(),page.locator()). - Prefira seletores estáveis, não classes dinâmicas.
- Use
except Exceptionno lugar deexceptgenérico, para não mascarar erros inesperados. - Adicione retries em caso de erro.
- Randomize delays para evitar bloqueios.
- Teste com 1 produto e 1 CEP antes de rodar tudo.
- Rodar com navegador visível:
browser = p.chromium.launch(headless=False, slow_mo=80)- Ajustar timeouts e delays.
- Testar seletores no DevTools.
- Timeout: aumenta timeout, checa seletor.
- Selector vazio: seletor errado ou conteúdo carregado depois, aumente espera.
- Excel corrompido: tente salvar CSV.
- Versão assíncrona com asyncio para ganho de performance.
- Paralelizar scraping com múltiplos contextos ou threads.
- Lidar com recaptcha, bloqueios e proteções anti-bot.
- Validar e padronizar dados extraídos para garantir qualidade.
- Testes unitários para garantir estabilidade.
- Detectar e classificar tipos de frete (grátis, expresso, agendado, normal, etc).