Sistema completo de data scraping e engenharia de dados, responsável por coletar, processar, armazenar e disponibilizar dados de múltiplas fontes através de uma API e um dashboard interativo.
O DataHunter simula um pipeline real de dados utilizado em empresas:
- Coleta dados de diferentes sites (web scraping)
- Realiza limpeza e transformação dos dados
- Armazena em banco de dados
- Disponibiliza via API REST
- Exibe visualmente em um dashboard
- Executa de forma automatizada e monitorada
Este projeto foi desenvolvido com foco em:
- Demonstrar habilidades práticas em engenharia de dados
- Trabalhar com scraping real de múltiplas fontes
- Aplicar boas práticas de arquitetura e organização de código
- Construir um projeto próximo de um ambiente profissional
- Scraping de múltiplas fontes
- Uso de XPath para extração de dados
- Tratamento e padronização com Pandas
- Armazenamento em banco de dados relacional
- API REST para consumo dos dados
- Dashboard para visualização
- Execução automática (jobs agendados)
- Sistema de logs e monitoramento
- Validação para detectar falhas no scraping
- Python
- BeautifulSoup
- Pandas
- PostgreSQL
- FastAPI
- React
- Cron Jobs
- Logging
- Docker
O projeto segue uma arquitetura modular baseada em camadas:
Data Sources
↓
Scrapers
↓
Data Processing (Pandas)
↓
Database (PostgreSQL)
↓
API (FastAPI)
↓
Frontend Dashboard
- Separação de responsabilidades (SRP)
- Código modular e escalável
- Facilidade de manutenção
- Reutilização de componentes
datahunter/
│
├── scrapers/ # Scripts de coleta de dados
├── processors/ # Limpeza e transformação dos dados
├── database/ # Conexão e models do banco
├── api/ # API REST
├── frontend/ # Dashboard
├── jobs/ # Automação / agendamentos
├── logs/ # Logs do sistema
├── tests/ # Testes
└── main.py # Orquestrador principal
git clone https://github.com/seu-usuario/datahunter.git
cd datahunterpython -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windowspip install -r requirements.txtCrie um arquivo .env:
DATABASE_URL=sqlite:///data.db
python main.pyuvicorn api.main:app --reloadAcesse:
http://localhost:8000/docs
cd frontend
npm install
npm startGET /dataGET /data?source=site1{
"title": "Produto X",
"price": 199.90,
"source": "site1",
"collected_at": "2026-04-04T12:00:00"
}O sistema pode ser configurado para rodar automaticamente:
- Via cron jobs
- Ou utilizando schedulers em Python
Exemplo:
0 * * * * python main.py(Roda a cada hora)
pytestMayson Lima dos Santos - Projeto desenvolvido como projeto de portfólio para engenharia de dados.
MIT