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

Aracaju-SE spider #570

Merged
merged 5 commits into from
Jan 20, 2025
Merged

Aracaju-SE spider #570

merged 5 commits into from
Jan 20, 2025

Conversation

rennerocha
Copy link
Collaborator

Finishing work started in #311

@rennerocha rennerocha mentioned this pull request Jun 25, 2022
3 tasks
@rennerocha rennerocha mentioned this pull request Sep 20, 2022
@trevineju trevineju linked an issue Oct 10, 2022 that may be closed by this pull request
@trevineju trevineju force-pushed the se-aracaju branch 2 times, most recently from f8030ed to 2475d18 Compare January 13, 2025 01:07
@trevineju
Copy link
Member

trevineju commented Jan 13, 2025

Recuperei essa PR para integrarmos a capital, modifiquei algumas poucas coisas (reposicionei métodos no arquivo, completei o objeto Gazette em que faltava edition_number e adicionei controle de data em outro ponto do código).

Agora resta só um problema principal: a interação com o campo de mês não está funcionando, por isso o raspador só coleta o mês de Janeiro dos anos (1 parece ser o valor padrão do campo pq 2025 só tem janeiro no momento).

Segue log de uma extração completa: se_aracaju_completa_novo.log | se_aracaju_completa_novo.csv

Neste zip, respostas.zip, deixo o HTML de duas páginas de evidência da situação:

  • page_aviso_de_invalido é o response.text que parse_page_result() trata (com exceção do mês de janeiro de cada ano, como dito) apontando que o valor tentado no campo de mês não é aceito
  • page_2024_com_apenas_uma_opcao é a página requisitada imediatamente antes, mostrando que no dropdown para 2024, só existe a opção de 1, os outros meses não.

O raspador já estava se comportando assim antes de eu modificar e conferi que, mesmo com as minhas modificações, isso não mudou.

Acho que estava usando parse() como nome de método, aproveitando ser callback padrão, para forçar o fluxo de retorno de responses passar por ele de novo implicitamente, mas como o fluxo desse raspador é um pouco complexo (ou eu achei), preferi optar por explícito. Por isso, renomeei parse() para make_mandatory_post_request(), que é o papel que entendi que cumpria.

O mesmo para parse_search_by_month_and_year(), que foi renomeado para start_session_ids(). Como esse método reinicia o fluxo do raspador ao chamar start_requests() de novo, demorei um pouco para perceber que faz isso para vincular requisições de diferentes pares (ano, mes) à IDs da sessão:

# primeiras requisições
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp>
# requisições depois de chamar start_requests() de novo na linha 46
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=DC729139FDFC6C1780F89A199A339CCE>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=CF470279D7AFDBE04C9E76CD514A3022>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=809997A2C7F076A2424F1B3B7947E2B3>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=CDD31AE82BD9E9DFEB3726637CA20151>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=7625BC00CBB7959E1CD01C5380D70EDC>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=6F7210974D35BB56E67A0BBB65B6347D>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=CE0359341FE57B0D37A326FE8F0CD1B1>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=C2C6095A1C6164F49643DB7B1C87802A>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=B53C84BEDDBE590B8FB36AF8A0D113DA>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=014358E8998C10B34F02B7D2EEDDF92F>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=111F74D48070A972FE1FD15C45164ACD>
<200 http://sga.aracaju.se.gov.br:5011/legislacao/faces/diario_form_pesq.jsp;jsessionid=C940439C751028A5AD803412372675DC>

PENDENCIA

Notei também que o raspador não tem lógica para coletar edições extras, e elas existem (por exemplo, em dezembro/2024), mas também não adicionei essa modificação, pq, como a navegação por mês não funciona, não consegui chegar no caso para testar.

@trevineju
Copy link
Member

@rennerocha, @tcurvelo, como já faz muito tempo que vocês trabalharam nessa PR, vou jogar na comunidade para saber se tem gente que se aventura em encarar o desafio (já passei um dia todo nela, fiquei esgotada de ideias de como resolver D:). Mas se vocês tiverem a fim de retomar e terminar, seria incrível 💖

rennerocha and others added 5 commits January 20, 2025 13:28
[se_aracaju] Handle concurrent sessions by using cookiejars

[se_aracaju] Handle pagination

[se_aracaju] Remove old (and commented) code

[se_aracaju] Remove autogenerated fields

[se_aracaju] Black-ify

Move Aracaju-SE spider to new location

Make Aracaju-SE aware of start_date and end_date

With this change, we are able to specify the time range we want to
retrieve when executing this spider, reducing the amount of requests and
not doing a full crawl every time.
Reorganiza código para seguir fluxo de leitura

Renomeia métodos

Move se_aracaju para diretório /se

wip
Remove método auxiliar

Renomeia variáveis
Remove redundância em chamada de requisição
@trevineju
Copy link
Member

@ogecece deu uma força para corrigir a interação do raspador para coleta dos meses e resolvi a limitação da coleta de edições extras. Então, é isso!

Obrigada, pessoal!

@trevineju trevineju merged commit 888164d into okfn-brasil:main Jan 20, 2025
1 check passed
@trevineju
Copy link
Member

trevineju commented Jan 20, 2025

Esqueci de adicionar no comentário anterior, mas os testes do raspador:

se_aracaju_periodo_1mes.csv |se_aracaju_periodo_1mes.log
se_aracaju_periodo_1semana.csv | se_aracaju_periodo_1semana.log
se_aracaju_periodo_3meses.csv | se_aracaju_periodo_3meses.log
se_aracaju_ultima.csv | se_aracaju_ultima.log

A coleta completa não foi finalizada pois não tenho espaço de memória para tanto, mas do que coletou:
se_aracaju_completa.csv
se_aracaju_completa.log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Aracaju-SE
3 participants