Need help with diario-oficial?
Click the ‚Äúchat‚ÄĚ button below for chat support from the developer who created it, or find similar developers for support.

About the developer

okfn-brasil
762 Stars 282 Forks MIT License 995 Commits 137 Opened issues

Description

ūüďį Brazilian government gazettes, accessible to everyone.

Services available

!
?

Need anything else?

Contributors list

Querido Di√°rio

Última atualização: 16/10/2021.


Click here to read this article in english.


Di√°rio Oficial √© o nome da publica√ß√£o utilizada pela administra√ß√£o p√ļblica brasileira para comunicar suas a√ß√Ķes √† popula√ß√£o. Para ser v√°lido, todo ato p√ļblico deve ser publicado no di√°rio oficial, seja na esfera federal, estadual ou municipal.

Mesmo com os esforços recorrentes para fortalecer a Lei de Acesso à Informação pelo país, a comunicação oficial permanece - na maioria do território nacional - em PDFs.

O objetivo do Querido Di√°rio √© trazer os di√°rios oficiais municipais para a era digital, centralizando as informa√ß√Ķes hoje dispon√≠veis apenas em fontes separadas.

O projeto tinha duas metas distintas quando foi lan√ßado: criar raspadores para os di√°rios oficiais e analisar as informa√ß√Ķes sobre compras p√ļblicas e licita√ß√Ķes. Atualmente, mantemos apenas o primeiro deles.

Para saber mais sobre o projeto, acesse o site oficial.

Tabela de Conte√ļdos

Ambiente de desenvolvimento

A melhor maneira de entender como o Querido Diário funciona é acessar a fonte original e rodá-la localmente. Todos os raspadores são desenvolvidos usando o framework Scrapy. Eles oferecem um tutorial para que você aprenda como usá-lo.

Se você utiliza Windows, antes de rodar os passos a seguir, você irá precisar do Microsoft Visual Build Tools (baixe aqui). Ao iniciar a instalação, você precisa selecionar 'C++ build tools' na aba de carregamento e também 'Windows 10 SDK' e 'MSVC v142 - VS 2019 C++ x64/x86 build tools' na aba de componentes individuais.

Se você utiliza Linux, os comandos a seguir irão criar um novo ambiente virtual - que manterá tudo isolado do seu sistema -, ativá-lo e instalar todas as bibliotecas necessárias para começar a rodar e desenvolver novos raspadores.

$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r data_collection/requirements-dev.txt
$ pre-commit install

No sistema Windows, você pode utilizar o código abaixo. Apenas substitua

source .venv/bin/activate
por
.venv/Scripts/activate.bat
. Os outros passos s√£o os mesmos usados no Linux.

Rodar o raspador

Depois de configurar o ambiente de desenvolvimento, você poderá desenvolver e executar novos raspadores. Os raspadores estão na pasta

data_collection
, então você deve entrar nela e executar o comando
scrapy
:
$ cd data_collection

A seguir, listamos alguns comandos √ļteis.

Obter a lista de raspadores disponíveis

$ scrapy list

Executar o raspador com o nome

spider_name
:

Atenção: o comando acima levará um tempo para ser finalizado e irá coletar o site inteiro por padrão. Se você deseja pará-lo antes disso ou limitar a execução, utilize CLOSESPIDER_ITEMCOUNT ou configure

start_date
no raspador para uma data mais próxima.
$ scrapy crawl spider_name

Voc√™ pode limitar o n√ļmero de di√°rios que deseja baixar configurando

start_date
como um argumento com o formato
YYYY-MM-DD
. O comando a seguir irá baixar apenas diários cuja data é maior que 01/09/2020:
$ scrapy crawl sc_florianopolis -a start_date=2020-09-01

Dados coletados ser√£o salvos na pasta

data_collection/data
.

Gerar m√ļltiplos raspadores a partir de um template

Você pode se deparar com um cenário em que há diferentes cidades utilizando a mesma base para o raspador, como em

FecamGazetteSpider
. Para não ter que criar os arquivos de raspadores manualmente, você pode utilizar um script para casos em que temos alguns raspadores que não são complexos e usam a mesma base.

Os templates de raspadores ficam na pasta

scripts/
. Aqui est√° um exemplo de um raspador gerado:
from datetime import date
from gazette.spiders.base import ImprensaOficialSpider


class BaGentioDoOuroSpider(ImprensaOficialSpider):

name = "ba_gentio_do_ouro"
allowed_domains = ["pmGENTIODOOUROBA.imprensaoficial.org"]
start_date = date(2017, 2, 1)
url_base = "http://pmGENTIODOOUROBA.imprensaoficial.org"
TERRITORY_ID = "2911303"

Para rodar o script, você precisa apenas de um arquivo .CSV seguindo a estrutura a seguir:

url,city,state,territory_id,start_day,start_month,start_year,base_class
http://pmXIQUEXIQUEBA.imprensaoficial.org,Xique-Xique,BA,2933604,1,1,2017,ImprensaOficialSpider
http://pmWENCESLAUGUIMARAESBA.imprensaoficial.org,Wenceslau Guimar√£es,BA,2933505,1,1,2017,ImprensaOficialSpider
http://pmVERACRUZBA.imprensaoficial.org,Vera Cruz,BA,2933208,1,4,2017,ImprensaOficialSpider

Depois de obter o arquivo .CSV, rode o comando:

cd scripts/

python generate_spiders.py new-spiders.csv

√Č isso. O novo raspador estar√° na pasta

data_collection/gazette/spiders/
.

Solução de problemas

Python.h
faltando

Ao rodar o comando

pip install
, você pode obter o seguinte erro:
module.c:1:10: fatal error: Python.h: No such file or directory
     #include 
              ^~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Tente instalar

python3-dev
. Por exemplo, via
apt install python3-dev
, se você está usando uma distro Debian, ou utilize o gerenciamento de pacotes da sua distro (por exemplo,
python3.6-dev
or
python3.7-dev
). Você pode saber qual é a sua versão via
python3 --version
.

Contribuindo

Se você está interessado em resolver issues e contribuir diretamente no código, por favor, leia o documento CONTRIBUTING.md.

Créditos

Este projeto é mantido pela Open Knowledge Brasil graças ao apoio da Digital Ocean e de muitas outras pessoas.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.