Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adiciona novos 10 raspadores do Paraná #1167

Merged
merged 1 commit into from
Sep 18, 2024
Merged

Adiciona novos 10 raspadores do Paraná #1167

merged 1 commit into from
Sep 18, 2024

Conversation

trevineju
Copy link
Member

@trevineju trevineju commented Jun 14, 2024

AO ABRIR uma Pull Request de um novo raspador (spider), marque com um X cada um dos items da checklist abaixo. Caso algum item não seja marcado, JUSTIFIQUE o motivo.

Layout do site publicador de diários oficiais

Marque apenas um dos itens a seguir:

  • O layout não se parece com nenhum caso da lista de layouts padrão
  • É um layout padrão e esta PR adiciona a spider base do padrão ao projeto junto com alguns municípios que fazem parte do padrão.
  • É um layout padrão e todos os municípios adicionados usam a classe de spider base adequada para o padrão.

Código da(s) spider(s)

  • O(s) raspador(es) adicionado(s) tem os atributos de classe exigidos.
  • O(s) raspador(es) adicionado(s) cria(m) objetos do tipo Gazette coletando todos os metadados necessários.
  • O atributo de classe start_date foi preenchido com a data da edição de diário oficial mais antiga disponível no site.
  • Explicitar o atributo de classe end_date não se fez necessário.
  • Não utilizo custom_settings em meu raspador.

Testes

  • Uma coleta-teste da última edição foi feita. O arquivo de .log deste teste está anexado na PR.
  • Uma coleta-teste por intervalo arbitrário foi feita. Os arquivos de .loge .csv deste teste estão anexados na PR.
  • Uma coleta-teste completa foi feita. Os arquivos de .log e .csv deste teste estão anexados na PR.

Verificações

  • Eu experimentei abrir alguns arquivos de diários oficiais coletados pelo meu raspador e verifiquei eles conforme a documentação não encontrando problemas.
  • Eu verifiquei os arquivos .csv gerados pela minha coleta conforme a documentação não encontrando problemas.
  • Eu verifiquei os arquivos de .log gerados pela minha coleta conforme a documentação não encontrando problemas.

Descrição

<Descreva o seu Pull Request informando a issue (caso exista) que está sendo solucionada ou uma descrição do código apresentado>

@marcospscruz
Copy link
Contributor

Olá, peguei esse pull request para testar antes da integração com o site do Querido Diário mas não conseguia rodar o raspador. Para todas as cidades, aparecia o erro:

ModuleNotFoundError: No module named 'gazette.spiders.base.atende_v2'

Fui investigar e não há nenhum arquivo chamado "atende_v2" dentro do caminho "gazette/spiders/base". O nome mais próximo é "atende_layoutdois" que possui uma classe chamada "BaseAtendeL2Spider" mas os raspadores estão herdando da classe "BaseAtendeV2Spider". Editei o arquivo dos raspadores para tentar usar a classe "BaseAtendeL2Spider" contida no "atende_layoutdois" e consegui iniciar a coleta dos pdfs. Estou avisando para o caso de mais alguém ter o mesmo problema.

@trevineju
Copy link
Member Author

boa, @marcospscruz! A branch estava desatualizada, de fato!

@marcospscruz
Copy link
Contributor

boa, @marcospscruz! A branch estava desatualizada, de fato!

Vou clonar o projeto novamente e refazer a coleta.

@marcospscruz
Copy link
Contributor

O raspador de Araucária dá erro e não faz o download de nenhum arquivo. Segue o log:
log_pr_araucaria.txt

@marcospscruz
Copy link
Contributor

Em relação à Apucarana, seguem os logs e arquivos:

log_pr_apucarana_ultima_edicao.txt
pr_apucarana_completa.csv
log_pr_apucarana_completa.txt
pr_apucarana_intervalo_maio_24.csv
log_pr_apucarana_intervalo_maio_24.txt

Nos logs da coleta completa, consta um erro mas não consegui localizar o que seria. Aparecem alguns warnings de arquivo vazio mas ao acessar os links os arquivos realmente estavam vazios. Na coleta de intervalo arbitrário aparecem alguns erros de integridade do SQLite porque esses arquivos já haviam sido baixados na coleta completa.

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

@marcospscruz
Copy link
Contributor

marcospscruz commented Aug 3, 2024

Boa noite, pessoal. Recentemente eu estive numa correria e não tive tempo de levar esse pull request adiante. Como os logs estão antigos vou refazer as coletas. Começando por Apucarana, seguem os arquivos:

Log última edição: log_apucarana.txt
Log intervalo 15/06/24 - 15/07/24: log_apucarana_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_apucarana_intervalo_jun_jul_24.csv
CSV coleta completa: pr_apucarana_completa2.csv
Log coleta completa: log_apucarana_completa2.txt

Minhas observações: Em relação à coleta da última edição e do intervalo parece estar tudo OK. Já em relação à coleta completa, ocorreu um erro:

FAIL: Item Validation Monitor/test_stat_monitor

Traceback (most recent call last):
File "/home/marcos/Documentos/querido-diario/.venv/lib/python3.8/site-packages/spidermon/contrib/scrapy/monitors/base.py", line 225, in test_stat_monitor
assertion_method(
AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '14'

Não sei dizer qual é a gravidade deste erro.

Analisando o arquivo CSV, percebi que a primeira edição aparece com a numeração 1 quando deveria ser um número bem maior mas isso parece ser um erro da pessoa que fez o upload do arquivo. Em determinados momentos as edições pulam alguns números mas olhando o site também tem esses intervalos. Há algumas edições com mais de um arquivo na planilha. Para registro fiz uma lista dos números de edições faltantes e duplicadas:

Edições faltantes: 9198, 9203, 9230, 9240, 9248, 9249, 9254, 9256, 9282, 9287, 9292, 9317, 9331, 9340, 9343, 9359, 9362, 9367, 9376, 9381, 9388, 9389, 9391, 9393, 9400, 9411, 9414, 9418, 9425, 9427, 9428, 9437, 9442, 9445, 9447, 9460, 9463, 9464, 9465, 9480, 9489, 9494, 9499, 9507, 9533, 9537, 9543, 9550, 9559, 9594, 9597, 9610, 9633, 9635, 9639, 9640, 9645, 9646, 9651, 9653, 9654, 9657, 9662, 9669-9686, 9689, 9690, 9693, 9695, 9696, 9698, 9618, 9733, 9734, 9752, 9755, 9769, 9777
Duplicadas: 9234(2), 9252(3), 9280(2), 9339(2), 9349(2), 9439(2), 9562(2), 9701(2)

Favor dar um feedback se a análise está correta porque é a primeira vez que a estou fazendo.

@trevineju
Copy link
Member Author

trevineju commented Aug 7, 2024

Boa noite, pessoal. Recentemente eu estive numa correria e não tive tempo de levar esse pull request adiante.

Beleza, @marcospscruz! Obrigada!

FAIL: Item Validation Monitor/test_stat_monitor

Traceback (most recent call last): File "/home/marcos/Documentos/querido-diario/.venv/lib/python3.8/site-packages/spidermon/contrib/scrapy/monitors/base.py", line 225, in test_stat_monitor assertion_method( AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '14'

Na seção de estatísticas do coleta completa tem: 'item_dropped_count': 14. Então esses 14 erros foram documentos que deveriam ter sido coletados e não foram. Se procurarmos pelo termo dropped no log aparecem esses casos. O primeiro é:

2024-08-03 14:57:10 [scrapy.pipelines.files] WARNING: File (empty-content): Empty file from <GET https://apucarana.atende.net/atende.php?rot=54002&aca=737&processo=download&parametro=%7B%22codigo%22%3A%22459%22%2C%22hash%22%3A%22B875D2AC4046B36CEA797C9A8FFB6D1BA5925FCC%22%7D&cidade=padrao > referred in : no-content
2024-08-03 14:57:10 [scrapy.core.scraper] WARNING: Dropped: Validation failed!
{'_validation': defaultdict(<class 'list'>, {'files': ['Field too short']}),
'date': '2024-02-06',
'edition_number': '9698',
'file_urls': ['https://apucarana.atende.net/atende.php?rot=54002&aca=737&processo=download&parametro=%7B%22codigo%22%3A%22459%22%2C%22hash%22%3A%22B875D2AC4046B36CEA797C9A8FFB6D1BA5925FCC%22%7D&cidade=padrao'],
'files': [],
'is_extra_edition': False,
'power': 'executive_legislative',
'scraped_at': '2024-08-03T17:56:52.264397Z',
'territory_id': '4101408'}

Ou seja, está denunciando que tentou obter o arquivo do dia 6/fev/24 e não conseguiu pois o arquivo estava vazio. Clicando no link que tem no log e navegando no site da prefeitura manualmente até essa data, realmente está vazio.

Mas isso é verificar 1 de 14 ocorrências de "item abandonado", teoricamente teria que olhar os outros 13 pois podem ter sido abandonados por motivos diferentes, não só pelo arquivo estar vazio. Mas já pesquisei por File (empty-content) também e são exatamente 14 ocorrências. Então sabemos que são todos os casos.

Não sei dizer qual é a gravidade deste erro.

Não é grave. Não temos como coletar um arquivo vazio mesmo. Deve ter sido cadastro errado ou algum erro no site.

Analisando o arquivo CSV, percebi que a primeira edição aparece com a numeração 1 quando deveria ser um número bem maior mas isso parece ser um erro da pessoa que fez o upload do arquivo.

Sim, isso. Também não temos o que fazer.

Em determinados momentos as edições pulam alguns números mas olhando o site também tem esses intervalos. Há algumas edições com mais de um arquivo na planilha. Para registro fiz uma lista dos números de edições faltantes e duplicadas:

Edições faltantes: 9198, 9203, 9230, 9240, 9248, 9249, 9254, 9256, 9282, 9287, 9292, 9317, 9331, 9340, 9343, 9359, 9362, 9367, 9376, 9381, 9388, 9389, 9391, 9393, 9400, 9411, 9414, 9418, 9425, 9427, 9428, 9437, 9442, 9445, 9447, 9460, 9463, 9464, 9465, 9480, 9489, 9494, 9499, 9507, 9533, 9537, 9543, 9550, 9559, 9594, 9597, 9610, 9633, 9635, 9639, 9640, 9645, 9646, 9651, 9653, 9654, 9657, 9662, 9669-9686, 9689, 9690, 9693, 9695, 9696, 9698, 9618, 9733, 9734, 9752, 9755, 9769, 9777

Também não temos o que fazer aqui. Para os próximo casos de análise, pode adotar que não precisa informar cada edição que faltar pontualmente -- isso é algo que conseguimos recuperar por meio que pesquisa no banco de dados do QD. Só informa se forem edições sequenciais por muito tempo, deixando buracos de semanas ou meses. Isso chama atenção por ser mais grave, um município sem disponibilizar DO por muito tempo. Aí a avaliamos, dentro da OKBR, cobrar o município para disponibilizar esse buraco todo que falta.

Duplicadas: 9234(2), 9252(3), 9280(2), 9339(2), 9349(2), 9439(2), 9562(2), 9701(2)

Olhei só os dois primeiros casos, mas não parece exatamente duplicado. Uma é a edição normal e outras são suplementos. Então tudo certo

Screenshot from 2024-08-07 18-55-07
Screenshot from 2024-08-07 18-55-46

Favor dar um feedback se a análise está correta porque é a primeira vez que a estou fazendo.

Tá excelente, Marcos. É por aí mesmo. Obrigada pelo cuidado! 💯 Qualquer coisa, segue perguntando ;)

@marcospscruz
Copy link
Contributor

Ok, Juliana. Então acredito que está tudo ok para Apucarana. Passando para a próxima cidade, Campo Largo. Seguem os arquivos:

Log última edição: log_campo_largo.txt
Log intervalo 15/06/24 - 15/07/24: log_campo_largo_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_campo_largo_intervalo_jun_jul_24.csv
Log coleta completa: log_campo_completa2.txt
CSV coleta completa: pr_campo_largo_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '23'

Pelo que pesquisei, em 14 dos casos, o arquivo não está mesmo disponível no site. Os outros 9 são casos de File (empty-content).

image

@marcospscruz
Copy link
Contributor

marcospscruz commented Aug 18, 2024

Passando para a próxima cidade, Campo Mourão. Seguem os arquivos:

Log última edição: log_campo_mourao.txt
Log intervalo 15/06/24 - 15/07/24: log_campo_mourao_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_campo_mourao_intervalo_jun_jul_24.csv
Log coleta completa: log_mourao_completa2.txt
CSV coleta completa: pr_campo_mourao_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '6'

Pelo que pesquisei, em 5 desses casos, o arquivo não está mesmo disponível no site. Um dos casos se refere a um "File (empty-content)".

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Castro. Seguem os arquivos:

Log última edição: log_castro.txt
Log intervalo 15/06/24 - 15/07/24: log_castro_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_castro_intervalo_jun_jul_24.csv
Log coleta completa: log_castro_completa2.txt
CSV coleta completa: pr_castro_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '4'

Pelo que pesquisei, são 4 casos de "File (empty-content)".

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Clevelândia. Seguem os arquivos:

Log última edição: log_clevelandia.txt
Log intervalo 15/06/24 - 15/07/24: log_clevelandia_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_clevelandia_intervalo_jun_jul_24.csv
Log coleta completa: log_clevelandia_completa2.txt
CSV coleta completa: pr_clevelandia_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

Item Validation Monitor/test_stat_monitor: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '5421'

Entre os erros de validação aparecem erros de integridade do banco como o seguinte (297 vezes):
WARNING: Something wrong has happened when adding the gazette in the database. Date: 2023-07-25. File Checksum: 659d926b6b3f6e660f661961520d3f6e. Details: ('(sqlite3.IntegrityError) UNIQUE constraint failed: gazettes.territory_id, gazettes.date, gazettes.file_checksum',)

Também há vários arquivos vazios (5314):
WARNING: File (empty-content)

Como há erros novos, não sei dizer se isso compromete a coleta.

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Corbélia. Seguem os arquivos:

Log última edição: log_corbelia.txt
Log intervalo 15/06/24 - 15/07/24: log_corbelia_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_corbelia_intervalo_jun_jul_24.csv
Log coleta completa: log_corbelia_completa2.txt
CSV coleta completa: pr_corbelia_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '16'

Pelo que pesquisei, são 16 casos de "File (empty-content)" que realmente não estão no site. Eles se concentram principalmente no início de 2024 em janeiro e fevereiro.

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Guaraniaçu. Seguem os arquivos:

Log última edição: log_guaraniacu.txt
Log intervalo 15/06/24 - 15/07/24: log_guraniacu_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_guaraniacu_intervalo_jun_jul_24.csv
Log coleta completa: log_guaraniacu_completa2.txt
CSV coleta completa: pr_guaraniacu_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '2'

Pelo que pesquisei, são 2 casos de "File (empty-content)" que realmente não estão no site.

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Mamborê. Seguem os arquivos:

Log última edição: log_mambore.txt
Log intervalo 15/06/24 - 15/07/24: log_mambore_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_mambore_intervalo_jun_jul_24.csv
Log coleta completa: log_mambore_completa2.txt
CSV coleta completa: pr_mambore_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '16'

Pelo que pesquisei, são 16 casos de "File (empty-content)" que realmente não estão no site. Principalmente casos em janeiro de 2024.

@marcospscruz
Copy link
Contributor

Passando para a próxima cidade, Ouro Verde do Oeste. Seguem os arquivos:

Log última edição: log_ouro_verde_do_oeste.txt
Log intervalo 15/06/24 - 15/07/24: log_ouro_verde_do_oeste_intervalo_jun_jul_24.txt
CSV intervalo 15/06/24 - 15/07/24: pr_ouro_verde_do_oeste_intervalo_jun_jul_24.csv
Log coleta completa: log_ouro_verde_do_oeste_completa2.txt
CSV coleta completa: pr_ouro_verde_do_oeste_completa2.csv

Para a coleta da última edição e do intervalo, parece que está tudo ok. Apenas para a coleta completa apareceu a mensagem:

Item Validation Monitor/test_stat_monitor: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0.0'. Current value: '3'

Pelo que pesquisei, são 3 casos de arquivo vazio que realmente não estão no site.

@marcospscruz
Copy link
Contributor

Até que enfim terminei! Desculpa a demora, pessoal!

Recapitulando:

Apucarana: Ok
Araucária: Raspador não está funcionando
Campo Largo: Ok
Campo Mourão: Ok
Castro: Ok
Clevelândia: Vários erros que eu desconheço
Corbélia: Ok
Guaraniaçu: Ok
Mamborê: Ok
Ouro Verde Do Oeste: Ok

@trevineju
Copy link
Member Author

trevineju commented Sep 18, 2024

show, @marcospscruz! obrigada pela revisão cuidadosa!

Nesse caso, como 8 de 10 raspadores estão aprovados, vale mais a pena simplesmente abandonar os 2 casos com problemas. Para Araucária, como é um problema do raspador, deixei uma issue aberta para registrar o problema (#1269)

Vou fazer as remoções aqui e aceitar a PR! Graças a você, o QD ganha 8 novos municípios hoje! Muito obrigada! 🎉 ❤️

@trevineju
Copy link
Member Author

Se você quiser continuar contribuindo com essas revisões ainda tem as PRs #1163, #1165 e #1166 disponíveis. O que acha? Se escolher uma, só deixar um comentário falando que vai revisar.

Além disso, no futuro, caso queira, você pode formalizar sua revisão. O github tem um fluxo pra isso, que deixo no print abaixo. Quando terminar os testes, basta fazer como você fez nesse último comentário mesmo, mas ao invés de apenas comentar, oficializar a revisão com uma solicitação de modificação sendo "este, este e este raspadores estão aprovados; este não. Solicito remoção desse e daquele" aí, a pessoa contribuidora (no caso eu) faz as modificações solicitadas, e depois disso, estando de acordo com seu pedido, você vai lá e aprova (é no mesmo lugar do print, mas a outra opção)

Screenshot from 2024-09-18 18-30-05

Não sei se parece muito formal, mas é o que você fez (ou fará) no final das contas, atuou como revisor ;)

@trevineju trevineju force-pushed the atende-pr-1 branch 2 times, most recently from 63d216b to 26c4e93 Compare September 18, 2024 22:35
Remove raspadores com problemas
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

2 participants