Sistema desenvolvido para coleta e consolidação de dados públicos utilizando APIs governamentais.
O projeto automatiza a extração de informações relacionadas a transferências, emendas e recursos públicos, permitindo transformar dados brutos em arquivos estruturados para análise.
O DataCollectorSeplan foi criado para reduzir o trabalho manual de coleta de dados públicos, automatizando consultas em APIs do Governo e organizando os resultados em arquivos CSV.
O foco principal do projeto é:
- Automatizar consultas em APIs governamentais
- Consolidar dados públicos em bases estruturadas
- Facilitar análises posteriores
- Reduzir retrabalho operacional
- Centralizar informações em um único fluxo de coleta
- Python
- Requests
- Pandas
- APIs REST Governamentais
- CSV
- JSON
- Variáveis de ambiente com
.env
DataCollectorSeplan/
├── api.py # Integrações e chamadas para APIs
├── app.py # Aplicação principal
├── app_discricionarias.py # Execução específica para dados discricionários
├── coletor_discricionarias.py # Lógica de coleta de dados discricionários
├── requirements.txt # Dependências do projeto
├── .env # Variáveis de ambiente
└── README.md- Consumo de APIs públicas do Governo
- Coleta automatizada de dados
- Consolidação de informações públicas
- Processamento em chunks para reduzir uso de memória
- Exportação final em Parquet compactado
- Separação entre ETL e interface Streamlit
Antes de executar o projeto, é necessário possuir:
- Python 3.10+
- Pip
Clone o repositório:
git clone https://github.com/ArthurSouzaDev/DataCollectorSeplan.gitAcesse a pasta do projeto:
cd DataCollectorSeplanCrie um ambiente virtual:
python -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activateInstale as dependências:
pip install -r requirements.txtO projeto utiliza variáveis de ambiente através do arquivo .env.
Exemplo:
TOKEN=seu_token
URL_API=sua_urlPara gerar os dados discricionários processados:
python coletor_discricionarias.pyPara executar a aplicação principal:
streamlit run app.pyETL
↓
Download atualizado dos ZIPs GOV
↓
Extração dos CSVs
↓
Tratamento em chunks
↓
Parquet em data_discricionarias/processados/
↓
Streamlit lê apenas o parquet pronto
A pasta data_discricionarias/ é organizada em:
data_discricionarias/
├── cache_bruto/ # ZIPs baixados a cada execução do ETL
├── extraidos/ # CSVs temporários extraídos dos ZIPs
└── processados/ # Parquet final consumido pelo Streamlit
Os arquivos brutos e extraídos são ignorados pelo Git. O artefato final leve em Parquet pode ser versionado e é atualizado automaticamente pelo workflow do GitHub Actions a cada 12 horas.
- Integração com banco de dados
- Agendamento automático de coletas
- Containerização com Docker
- API própria para consulta dos dados consolidados
Arthur Souza
- GitHub: https://github.com/ArthurSouzaDev
- Repositório: https://github.com/ArthurSouzaDev/DataCollectorSeplan