Skip to content

cdhnr/scraping_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

Automação de consulta de frete e prazo

Python Status License

Descrição

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.


Estrutura do projeto

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).


Dependências (mínimas)

As dependências já estão em src/requirements.txt:

playwright
pandas
openpyxl

Instalação (passo a passo)

  1. 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
  2. Instale dependências:
    pip install -r src/requirements.txt
  3. Instale navegadores do Playwright:
    playwright install
  4. Execute o script:
    python src/app.py

Se preferir, também funciona executar a partir de src/:

cd src
python app.py

Configurações importantes (no código)

Defina 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"

Encontrar e preencher seletores (XPaths / CSS)

  • 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.

Boas práticas

  • Use except Exception no lugar de except gené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.

Debugging rápido

  • Rodar com navegador visível:
browser = p.chromium.launch(headless=False, slow_mo=80)
  • Ajustar timeouts e delays.
  • Testar seletores no DevTools.

Problemas comuns

  • Timeout: aumenta timeout, checa seletor.
  • Selector vazio: seletor errado ou conteúdo carregado depois, aumente espera.
  • Excel corrompido: tente salvar CSV.

Melhorias futuras para pensar

  • 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).

About

Robô que automatiza coleta de preços e prazos, cruzando CEPs e produtos para gerar relatórios em Excel. Ideal para logística e análise de fretes.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages