Skip to content

okfn-brasil/querido-diario

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Português (BR) | English (US)

Querido Diário

Querido Diário

Dentro do ecossistema do Querido Diário, este repositório é o responsável pela tarefa de raspagem dos sites publicadores de diários oficiais.

Conheça mais sobre as tecnologias e a história do projeto no site do Querido Diário

Sumário

Como contribuir

catarse

Agradecemos por considerar contribuir com o Querido Diário! 🎉

Você encontra como fazê-lo no CONTRIBUTING.md!

Além disso, consulte a documentação do Querido Diário para te ajudar.

Ambiente de desenvolvimento

Você precisa ter Python (+3.0) e o framework Scrapy instalados.

Os comandos abaixo preparam o ambiente em sistema operacional Linux. Eles consistem em criar um ambiente virtual de Python, instalar os requisitos listados em requirements-dev e a ferramenta para padronização de código pre-commit.

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

A configuração em outros sistemas operacionais está disponível em "como configurar o ambiente de desenvolvimento", incluindo mais detalhes para quem deseja contribuir com o desenvolvimento do repositório.

Template para raspadores

Ao invés de começar um arquivo de raspador do zero, você pode inicializar um arquivo de código de raspador já no padrão do Querido Diário, a partir de um template. Para isso, faça:

  1. Vá para o diretório data_collection:
cd data_collection
  1. Acione o template:
scrapy genspider -t qdtemplate <uf_nome_do_municipio> <https://sitedomunicipio...>

Um arquivo uf_nome_do_municipio.py será criado no diretório spiders, com alguns campos já preenchidos. O diretório é organizado por UF, lembre-se de mover o arquivo para o diretório adequado.

Como executar

Para experimentar a execução de um raspador já integrado ao projeto ou testar o que esteja desenvolvendo, siga os comandos:

  1. Se ainda não o fez, ative o ambiente virtual no diretório /querido-diario:
source .venv/bin/activate
  1. Vá para o diretório data_collection:
cd data_collection
  1. Verifique a lista de raspadores disponíveis:
scrapy list
  1. Execute um raspador da lista:
scrapy crawl <nome_do_raspador>       //exemplo: scrapy crawl ba_acajutiba
  1. Os diários coletados na raspagem serão salvos no diretório data_collection/data

Dicas de execução

Além dos comandos acima, o Scrapy oferece outros recursos para configurar o comando de raspagem. Os recursos a seguir podem ser usados sozinhos ou combinados.

  • Limite de data
    Ao executar o item 4, o raspador coletará todos os diários oficiais do site publicador daquele município. Para execuções menores, utilize a flag de atributo -a seguida de:

start_date=AAAA-MM-DD: definirá a data inicial de coleta de diários.

scrapy crawl <nome_do_raspador> -a start_date=<AAAA-MM-DD>

end_date=AAAA-MM-DD: definirá a data final de coleta de diários. Caso omitido, assumirá a data do dia em que está sendo executado.

scrapy crawl <nome_do_raspador> -a end_date=<AAAA-MM-DD>
  • Arquivo de log
    É possível enviar o log da raspagem para um arquivo ao invés de deixá-lo no terminal. Isto é particularmente útil quando se desenvolve um raspador que apresenta problemas e você quer enviar o arquivo de log no seu PR para obter ajuda. Para isso, use a flag de configuração -s seguida de:

LOG_FILE=log_<nome_do_municipio>.txt: definirá o arquivo para armazenar as mensagens de log.

scrapy crawl <nome_do_raspador> -s LOG_FILE=log_<nome_do_municipio>.txt
  • Tabela de raspagem
    Também é possível construir uma tabela que lista todos os diários e metadados coletados pela raspagem, ficando mais fácil de ver como o raspador está se comportando. Para isso, use a flag de saída -o seguida de um nome para o arquivo.
scrapy crawl <nome_do_raspador> -o <nome_do_municipio>.csv

Solução de problemas

Confira o arquivo de solução de problemas para resolver os problemas mais frequentes com a configuração do ambiente do projeto.

Suporte

Discord Invite

Ingresse em nosso canal de comunidade para trocas sobre os projetos, dúvidas, pedidos de ajuda com contribuição e conversar sobre inovação cívica em geral.

Agradecimentos

Este projeto é mantido pela Open Knowledge Brasil e possível graças às comunidades técnicas, às Embaixadoras de Inovação Cívica, às pessoas voluntárias e doadoras financeiras, além de universidades parceiras, empresas apoiadoras e financiadoras.

Conheça quem apoia o Querido Diário.

Open Knowledge Brasil

Twitter Follow Instagram Follow LinkedIn Follow

A Open Knowledge Brasil é uma organização da sociedade civil sem fins lucrativos, cuja missão é utilizar e desenvolver ferramentas cívicas, projetos, análises de políticas públicas, jornalismo de dados para promover o conhecimento livre nos diversos campos da sociedade.

Todo o trabalho produzido pela OKBR está disponível livremente.

Licença

Código licenciado sob a Licença MIT.