marcusoregano / maria-quiteria

Backend para coleta e disponibilização dos dados 📜

Home Page:https://www.dadosabertosdefeira.com.br/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Maria Quitéria

CI

Um projeto para libertar dados do município de Feira de Santana.

Não sabe quem foi Maria Quitéria?

Dados

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

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.

Coleta

Esse projeto usa Scrapy para a coleta de dados e Django para o backend.

Configurando seu ambiente

  • 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).

Rodando os spiders

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.

Extraindo o conteúdo dos arquivos ao rodar os spiders

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.

Salvando dados da coleta no banco de dados

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"}'

Serviço de fila e processamento assíncrono

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.

Utilizando o Docker para subir o RabbitMQ

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
Instalando o RabbitMQ localmente

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

About

Backend para coleta e disponibilização dos dados 📜

https://www.dadosabertosdefeira.com.br/

License:MIT License


Languages

Language:Python 94.7%Language:HTML 4.4%Language:CSS 0.6%Language:JavaScript 0.2%Language:Shell 0.1%