DadosAbertosDeFeira / maria-quiteria

Backend para coleta e disponibilização dos dados 📜
https://mq.dadosabertosdefeira.com.br/painel
MIT License
167 stars 69 forks source link
civic-tech dados-abertos django django-rest-framework feira-de-santana hacktoberfest scrapy

Maria Quitéria

CI

Tem a missão de libertar dados do município de Feira de Santana. Responsável pela raspagem e o armazenamento.

Não sabe quem foi Maria Quitéria?

Dados

Você pode visualizar e fazer buscas nossos dados aqui.

Base de dados Fonte Descrição Coleta Banco de dados Download
Agenda (citycouncil.py) Câmara Municipal Agenda (ordem do dia, homenagens, sessões ordinárias etc) da Câmara Municipal. :heavy_check_mark: :heavy_check_mark: Kaggle
Atas das sessões (citycouncil.py) Câmara Municipal Atas das sessões da Câmara Municipal. :heavy_check_mark: :heavy_check_mark: 🔜
Lista de Presença (citycouncil.py) Câmara Municipal Assiduidade dos vereadores da Câmara Municipal. :heavy_check_mark: :heavy_check_mark: Kaggle
Despesas (citycouncil.py) Câmara Municipal Gastos realizados pela Câmara Municipal. :heavy_check_mark: :heavy_check_mark: 🔜
Contratos (cityhall.py) Prefeitura Contratos realizados pela prefeitura entre 2016 e 2017. 🔜 🔜 🔜
Diário Oficial (gazette.py) Prefeitura/Câmara de Vereadores Diário oficial do executivo e legislativo. :heavy_check_mark: :heavy_check_mark: Kaggle
Licitações (cityhall.py) Prefeitura Licitações realizadas pela prefeitura desde 2015. :heavy_check_mark: :heavy_check_mark: Kaggle
Pagamentos (cityhall.py) Prefeitura Pagamentos realizados pela prefeitura desde 2010. 🔜 🔜 🔜

Contribuindo para o projeto

Contribuições são muito bem-vindas. Veja como contribuir no nosso Guia de Contribuição.

Toda a comunicação e demais interações do Dados Abertos de Feira estão sujeitas ao nosso Código de Conduta.

Configurando seu ambiente

Você precisará do Docker e do Docker-Compose para rodar o projeto.

Carregue as variáveis de ambiente

Um exemplo das configurações pode ser encontrado no arquivo .env.example, que deve ser copiado para um arquivo .env na raiz do projeto.

Caso queira utilizar um banco de dados diferente basta configurar a variável de ambiente DATABASE_URL em seu .env.

Instale as dependências e prepare os serviços

make build

O passo anterior vai criar um banco de dados postgres. Agora, basta aplicar as migrations executar o collectstatic:

make migrate
make collectstatic

Executando os testes

make tests

Acessando o site

Rode o servidor com:

make run

Com as configurações padrão o painel de controle estará acessível pela URL: localhost:8000. Veja as bases de dados disponíveis no nosso painel público localhost:8000/painel.

Para navegar no admin, primeiro crie um super administrador:

make createsuperuser

Coletando os dados

Boa parte dos dados que temos vem da raspagem de dados feita por spiders. O comando abaixo vai executar todos os spiders e salvar os itens raspados no banco de dados:

make crawl

Durante a coleta e adição ao banco, vamos também tentar extrair o conteúdo dos arquivos encontrados.

Rodando os spiders individualmente

No diretório scraper você poderá encontrar os spiders responsáveis pela coleta dos dados. Para entender melhor como eles funcionam, dê uma olhada na documentação do scrapy.

Para rodar um spider, execute:

SPIDER=citycouncil_agenda make runspider
# ou
SPIDER=citycouncil_agenda START_DATE=03/01/2020 make runspider

Para salvar os dados de um spider em um arquivo:

docker-compose run --rm web scrapy crawl citycouncil_agenda -o citycouncil_agenda.json

Você pode substituir json por outros formatos como csv.

Caso queira passar alguma configuração extra para o Scrapy através do comando crawl você pode adicionar após o parâmetro --scrapy-args:

docker-compose run --rm web python manage.py crawl --scrapy-args '{"LOG_FILE": "test.log"}'

API

Sobre acesso a API veja instruções em nossa Wiki.

Infraestrutura

Essa aplicação está sendo hospedada no PaaS Dokku e todo código IaC está nesse repositório.