Repositório auxiliar para encontrar sites de prefeituras ou sites publicadores de diários oficiais.
É uma ação de apoio ao repositório de raspadores do Querido Diário, visto que uma vez que padrões sejam mapeados em massa, o desenvolvimento de raspadores para todos os casos achados é facilitado, permitindo aumentar a cobertura do Querido Diário mais rapidamente.
Leia o CONTRIBUTING.md para saber como contribuir.
diretório | objetivo |
---|---|
mapeadores/spiders |
conter um mapeador para cada padrão identificado |
resultados/brutos |
local de saída para arquivos de mapeamento |
resultados/tratados |
local de saída para as versões finais dos mapeamentos |
docs |
ficam os arquivos de documentação do repositório |
Há duas rotinas pressupostas no repositório: Mapeamento de URLs e Tratamento dos Resultados.
Etapa que aciona mapeadores que funcionam com a lógica de tentativa e erro: fazer combinações com os nomes de municípios, encaixar em um formato de URL conhecido e experimentar fazer um acesso ao site "inventado" para verificar se é um caso existente, ou seja, se uma requisição a essa URL retorna sucesso.
Os mapeadores produzem dois arquivos csv
, salvos no diretório resultados/brutos
:
data-da-execucao_nome-do-mapeador_valido.csv
: contém a lista de URLs existentes e verificadas como casos de interesse (validadas).data-da-execucao_nome-do-mapeador_invalido.csv
: contém a lista de URLs existentes, mas que não passaram na verificação do caso de interesse (inválida).
O arquivo com _invalido
não é utilizado por outras partes do fluxo, porém é criado
por ser de valor para o objetivo central do repositório: encontrar sites das prefeituras.
São casos em que, apesar de não serem do padrão sendo mapeado, a URL existe na internet
(o scrapy recebeu uma resposta de sucesso), fazendo da informação útil de ser preservada
para ser checada.
Script que percorre todos os arquivos válidos do diretório resultados/brutos
fazendo duas coisas:
- aplica tratamentos neles e salva seus correspondentes tratados em
resultados/tratados
. - unifica os mapeamentos parciais em um único mapeamento centralizado
resultados/cidades_mapeadas.csv
.
Como a lógica de mapeamento é a de "ficar chutando" URLs até encontrar casos de
interesse e metadados importantes, é comum que o primeiro arquivo produzido (o
salvo no diretório resultados/brutos
) tenha muita "sujeira". Por exemplo, casos
que o site existe, é do layout certo, mas só tem um documento. Ou, ainda, quando
várias requisições são necessárias para encontrar a data mais antiga disponível,
fazendo dos dados das requisições intermediárias são descartáveis.
Enfim, o script de tratamento existe para revisar e resumir esse arquivo inicial.
- Faça um fork do repositório.
- Em um terminal aberto no diretório de sua preferência, faça um clone (local) do seu fork (remoto).
git clone https://github.com/<seu-usuario-do-github>/mapeamento-de-sites.git
- Acesse o diretório local.
cd mapeamento-de-sites/
- Crie um ambiente virtual. A sugestão é nomear como
.venv
, mas pode escolher o nome que preferir.
python3 -m venv .venv
- Ative o ambiente virtual.
source .venv/bin/activate
- Instale as dependências do projeto.
pip install -r requirements.txt
- Pronto! Seu repositório local está pronto para ser usado! 🎉
- Veja a lista de mapeadores integrados disponíveis para serem executados.
scrapy list
- Escolha um dos mapeadores da lista e execute-o.
make run_spider SPIDER=<nome-do-mapeador>
- Acione a rotina de tratamento de arquivos
make normalize
- O comando abaixo executa todos os mapeadores do repositório e, ao fim, aciona a rotina de tratamento de arquivos.
make run_all