Português (BR) | English (US)
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
- Ambiente de desenvolvimento
- Template para raspadores
- Como executar
- Solução de problemas
- Suporte
- Agradecimentos
- Open Knowledge Brasil
- Licença
Como contribuir
Agradecemos por considerar contribuir com o Querido Diário! :tada:
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:
- Vá para o diretório
data_collection
:
cd data_collection
- 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:
- Se ainda não o fez, ative o ambiente virtual no diretório
/querido-diario
:
source .venv/bin/activate
- Vá para o diretório
data_collection
:
cd data_collection
- Verifique a lista de raspadores disponíveis:
scrapy list
- Execute um raspador da lista:
scrapy crawl <nome_do_raspador> //exemplo: scrapy crawl ba_acajutiba
- 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
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
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