Um projeto para libertar dados do município de Feira de Santana.
Não sabe quem foi Maria Quitéria?
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. | ✔️ | ✔️ | 🔜 |
Atas das sessões (citycouncil.py ) |
Câmara Municipal | Atas das sessões da Câmara Municipal. | ✔️ | ✔️ | 🔜 |
Lista de Presença (citycouncil.py ) |
Câmara Municipal | Assiduidade dos vereadores da Câmara Municipal. | ✔️ | ✔️ | 🔜 |
Despesas (citycouncil.py ) |
Câmara Municipal | Gastos realizados pela Câmara Municipal. | ✔️ | ✔️ | Kaggle |
Contratos (cityhall.py ) |
Prefeitura | Contratos realizados pela prefeitura entre 2016 e 2017. | ✔️ | 🔜 | Kaggle |
Diário Oficial (gazette.py ) |
Prefeitura/Câmara de Vereadores | Diário oficial do executivo e legislativo desde 2015. | ✔️ | ✔️ | Kaggle |
Diário Oficial (legado - antes de 2015) (gazette.py ) |
Prefeitura | Leis e decretos entre 1999 e 2015. | ✔️ | ✔️ | Kaggle |
Licitações (cityhall.py ) |
Prefeitura | Licitações realizadas pela prefeitura desde 2015. | ✔️ | 🔜 | Kaggle |
Pagamentos (cityhall.py ) |
Prefeitura | Pagamentos realizados pela prefeitura desde 2010. | ✔️ | 🔜 | Kaggle |
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.
Esse projeto usa Scrapy para a coleta de dados e Django para o backend.
- Instale as dependências
Para rodar esse projeto localmente, instale as dependências:
pip install -r dev_requirements.txt
- Carregue as variáveis de ambiente
Um exemplo das configurações pode ser encontrado no arquivo .env.example
(que pode ser copiado para um arquivo .env
na raiz do projeto).
- Postgres
Esse projeto usa o Postgres. Para rodar o banco de dados local, crie um
banco de dados com o nome mariaquiteria
.
Adicione a variável de ambiente DATABASE_URL
com a url de conexão ao seu Postgres.
Ex: DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME
Depois basta aplicar as migrations
:
python manage.py migrate
- Admin
Para navegar na admin, primeiro crie um super administrador:
python manage.py createsuperuser
Depois, rode o servidor com:
python manage.py runserver
Com as configurações padrão o painel de controle estará acessível pela URL: 127.0.0.1
.
- Java
Nesse projeto utilizamos o Apache Tika para extrair o conteúdo dos arquivos de licitações, contratos e outros. Para tê-lo funcionando com esse projeto você precisa apenas do Java +7 instalado na sua máquina (pode ser a JRE mesmo).
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 executar um spider, execute:
scrapy crawl cityhall_payments
scrapy crawl cityhall_payments -a start_from_date=03/01/2020
Para salvar os dados de um spider em um arquivo:
scrapy crawl cityhall_payments -o pagamentos.json
Você pode substituir json
por outros formatos como csv
.
Para incluir o conteúdo dos arquivos nos itens raspados
você deve configurar a variável de ambiente EXTRACT_FILE_CONTENT_FROM_PIPELINE
como True
.
Para executar os spiders e salvar os itens no banco de dados, execute:
python manage.py crawl
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
:
./manage.py crawl --scrapy-args '{"LOG_FILE": "test.log"}'
Você pode utilizar ou não um serviço de fila para processamento assíncrono. Isso é totalmente opcional. Essa funcionalidade pode ser utilizada para extraírmos o conteúdo de PDFs para texto, com o Tika, de maneira assíncrona à raspagem de dados. Por padrão, essa funcionalidade está ativada, seguindo a configuração do ambiente de produção.
Para utilizá-la, basta instalar o RabbitMQ. Para essa última parte, temos duas formas de te ajudar. Basta seguir para a próxima seção.
Caso queira desativar essa funcionalidade, você vai precisar configurar a variável
de ambiente ASYNC_FILE_PROCESSING
para False
.
Se você não quiser instalar o RabbitMQ, a forma mais prática de ter uma instância dele rodando é com o Docker:
docker run -p 5672:5672 rabbitmq
Deixe esse processo rodando em uma janela do terminal.
Em outra janela, execute o dramatiq
:
dramatiq datasets.tasks -p3 -v
Caso prefira, você pode baixar e instalar o RabbitMQ do site oficial. Feito isso, inicie o serviço em uma janela do terminal e mantenha essa janela aberta:
rabbitmq-server