Pipeline local em Python para coletar vagas via URLs diretas, realizar scraping robusto com fallback, extrair campos estruturados usando LLM local (Ollama), deduplicar e persistir histórico em SQLite, com export automático para CSV e Excel (XLSX).
Projeto focado em automação, backend e dados, com execução 100% local.
- Pipeline automatizado de scraping por URL
- Fallback robusto para diferentes layouts de página
- Extração estruturada com LLM local (Ollama)
- Deduplicação dos dados coletados
- Export para CSV e Excel (.xlsx)
- Scraping robusto com:
- fallback Jina (
r.jina.ai) - fallback HTML (
requests + bs4 + lxml) - retry/backoff exponencial (
tenacity) - rate limit por domínio (jitter)
- rotação de User-Agent (lista local)
- fallback Jina (
- IA local com Ollama
- streaming + heartbeat
- retorno em JSON
- sem quota / sem API paga
- Deduplicação:
- por
(platform, job_id)no SQLite - por
hashdo texto (mudança real do conteúdo)
- por
- Export:
- ALL (todas as vagas)
- filtro JR/PLENO/ATIVAS
Automatizar a coleta e organização de vagas a partir de links diretos, gerando uma base histórica consultável e arquivos finais prontos para uso (CSV/XLSX).
- Coleta de vagas por lista de URLs
- Scraping robusto com fallback
- Extração estruturada com IA local (Ollama)
- Redução e limpeza de texto para otimizar custo/tempo de LLM
- Deduplicação e persistência de histórico em SQLite
- Export automático para:
- CSV
- Excel (.xlsx)
- Logs detalhados para auditoria e debug
- Arquitetura modular e pronta para expansão
Stack:
- Python
- Web Scraping
- SQLite
- Data Processing
- Automação
- ETL (conceito)
- LLM local (Ollama)
- APIs
- Export CSV/XLSX
As imagens abaixo mostram o pipeline em execução e o output final gerado automaticamente.
O pipeline é organizado em etapas independentes, com foco em confiabilidade e reaproveitamento:
- Entrada: lista de URLs de vagas
- Scraping + fallback (caso layout falhe)
- Redução de texto (limpeza e otimização)
- Extração estruturada com IA local (Ollama)
- Validação de chaves mínimas
- Deduplicação (hash) e persistência em SQLite
- Export automático para CSV e Excel
job_scraper_ia/
├── main.py
├── config.json
├── db.py
├── export_db.py
├── output/
├── README.md
└── ...git clone https://github.com/flavioro/job_scraper_ia.git
cd job_scraper_iapython -m venv venv
venv\Scripts\activatepip install -r requirements.txt- Instale o Ollama: https://ollama.com/
- Baixe um modelo (exemplo):
ollama pull qwen2.5:7bpython main.pyO projeto gera automaticamente arquivos no diretório output/, por exemplo:
output/vagas_output_all.csvoutput/vagas_output_all.xlsxoutput/vagas_output_jr_pleno_ativas.csvoutput/vagas_output_jr_pleno_ativas.xlsx
O pipeline tenta estruturar campos como:
- Empresa
- Cargo
- Localidade / Remoto
- Tipo de trabalho (remoto / híbrido / presencial)
- Senioridade
- Salário (quando disponível)
- Link de candidatura
- Data da publicação
- Score (0 a 100)
- Motivo curto (feedback do match)
- O projeto roda 100% local, sem depender de API paga.
- A qualidade da extração pode variar conforme o layout e o texto da vaga.
- A arquitetura é preparada para adicionar novos sites/fontes facilmente.
- Dashboard (Streamlit) para visualizar e filtrar vagas
- Integração com mais fontes (Gupy, Workday, Lever, Greenhouse etc)
- Cache inteligente por domínio
- Scheduler (execução automática diária)
- Export com filtros personalizados
Flavio Rodrigues
LinkedIn: https://www.linkedin.com/in/flaviorobertorodrigues/
GitHub: https://github.com/flavioro

