Skip to content

Fix Porto Alegre gazette spider - #1469

Open
lucaspmgomess wants to merge 2 commits into
okfn-brasil:mainfrom
lucaspmgomess:fix/porto-alegre-spider
Open

Fix Porto Alegre gazette spider#1469
lucaspmgomess wants to merge 2 commits into
okfn-brasil:mainfrom
lucaspmgomess:fix/porto-alegre-spider

Conversation

@lucaspmgomess

@lucaspmgomess lucaspmgomess commented Aug 21, 2026

Copy link
Copy Markdown

Esta PR corrige o spider existente de Porto Alegre/RS e amplia a cobertura hist贸rica do DOPA at茅 15/03/1995.

Layout do site publicador de di谩rios oficiais

  • 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.

O DOPA utiliza duas fontes para disponibiliza莽茫o do acervo:

  • o acervo hist贸rico no AtoM da PROCEMPA, para as edi莽玫es de 15/03/1995 at茅 29/04/2011;
  • a API atual do DOPA, a partir de 02/05/2011.

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.

O start_date foi definido como 15/03/1995, data da primeira edi莽茫o dispon铆vel no acervo hist贸rico do DOPA no AtoM da PROCEMPA.

O custom_settings = {"CONCURRENT_REQUESTS": 8} j谩 existia no spider e foi mantido.

A coleta 茅 dividida automaticamente entre as duas fontes:

  • 15/03/1995 a 29/04/2011: AtoM da PROCEMPA;
  • a partir de 02/05/2011: API atual do DOPA.

No acervo hist贸rico, os di谩rios s茫o classificados como executive_legislative. Na API atual, Executivo e Legislativo s茫o disponibilizados separadamente e s茫o mapeados para executive e legislative.

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 .log e .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.

脷ltima edi莽茫o testada: 20/08/2026, com 4 itens e 4 arquivos baixados, todos com resposta HTTP 200.

No intervalo de 01/07/2026 a 31/07/2026 foram coletadas 72 publica莽玫es: 36 do Executivo e 36 do Legislativo, sendo 26 extras e 46 ordin谩rias. A execu莽茫o terminou normalmente e os 72 arquivos foram baixados.

Tamb茅m foram realizadas coletas espec铆ficas para validar o acervo hist贸rico:

  • 1995: 200 edi莽玫es;
  • 2003: 250 edi莽玫es;
  • 2010: 252 edi莽玫es;
  • transi莽茫o entre as fontes, de 25/04/2011 a 10/05/2011: 19 itens, incluindo as 煤ltimas edi莽玫es do AtoM e as primeiras edi莽玫es obtidas pela API.

A coleta completa de 15/03/1995 at茅 24/08/2026 resultou em 15.215 publica莽玫es e 15.215 arquivos.

A execu莽茫o terminou com finish_reason = finished, item_scraped_count = 15215 e file_count = 15215, sem itens descartados, retries esgotados ou erros registrados.

Os testes automatizados do spider tamb茅m foram ampliados para cobrir o acervo hist贸rico e a transi莽茫o entre as duas fontes.

Resultado local:

22 passed

O CI da PR tamb茅m foi executado com sucesso.

Verifica莽玫es

Foram conferidas manualmente edi莽玫es de per铆odos distintos:

  • edi莽茫o 4003, de 02/05/2011;
  • edi莽茫o 5661, de 02/01/2018;
  • edi莽茫o 7676, de 05/01/2026.

Tamb茅m foi verificado que o PDF da edi莽茫o 5661 coletado pela API atual 茅 id锚ntico ao arquivo j谩 armazenado historicamente pelo Querido Di谩rio na data 2018-01-02.

Descri莽茫o

Relacionado 脿 #1460.

O spider de Porto Alegre dependia da estrutura HTML do antigo site do DOPA. Ap贸s a migra莽茫o do portal, essa URL passou a redirecionar para a nova aplica莽茫o e o spider deixou de encontrar as edi莽玫es.

Inicialmente, a corre莽茫o migrou a coleta atual para a API utilizada pelo DOPA:

GET /api/diarios/busca-por-mes-agrupada?mes={mes}&ano={ano}

A resposta da API 茅 processada separadamente para Executivo e Legislativo e preenche date, edition_number, is_extra_edition, power e file_urls.

A PR tamb茅m passou a recuperar o hist贸rico anterior 脿 API utilizando o acervo do DOPA dispon铆vel no AtoM da PROCEMPA.

Com isso, o spider passa a cobrir continuamente o per铆odo desde 15/03/1995:

  • AtoM: 15/03/1995 a 29/04/2011;
  • API DOPA: 02/05/2011 em diante.

Tamb茅m foram adicionados testes cobrindo gera莽茫o das requisi莽玫es, transi莽茫o entre as fontes, pagina莽茫o do AtoM, diferentes formatos de t铆tulos hist贸ricos, edi莽玫es extras, URLs de download, filtragem de datas e mapeamento de Executivo/Legislativo.

porto_alegre_interval.csv
porto_alegre_interval.log
porto_alegre_latest.log
full-1995-2026.csv
full-1995-2026.log

@lucaspmgomess

lucaspmgomess commented Aug 22, 2026

Copy link
Copy Markdown
Author

Conclu铆 as valida莽玫es da vers茫o atual da PR.

A cobertura hist贸rica foi ampliada at茅 15/03/1995, utilizando o acervo AtoM da PROCEMPA at茅 29/04/2011 e a API atual do DOPA a partir de 02/05/2011.

Foram validados, entre outros pontos:

  • 1995: 200 edi莽玫es;
  • 2003: 250 edi莽玫es;
  • 2010: 252 edi莽玫es;
  • transi莽茫o AtoM/API em abril/maio de 2011;
  • coleta completa de 1995 a 2026: 15.215 publica莽玫es e 15.215 arquivos.

Os 22 testes locais passaram e o CI da PR tamb茅m passou.

Atualizei a descri莽茫o e os anexos da coleta completa.

A PR est谩 pronta para revis茫o.

@lucaspmgomess

Copy link
Copy Markdown
Author

Oi @diraol ! Quando tiver um tempo, voc锚 poderia dar uma olhada nesta PR?

Ela est谩 pronta para revis茫o e j谩 validei a coleta completa, o hist贸rico desde 1995, a transi莽茫o entre o AtoM e a API atual do DOPA, al茅m dos testes automatizados e CI.

Como ela corrige o spider de Porto Alegre que est谩 atualmente com a indexa莽茫o parada, queria ver se conseguimos dar andamento.

Obrigado!

@diraol

diraol commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Oi @lucaspmgomess , antes de mais nada, valeu pela contribui莽茫o!!!

Nesse fim de semana realizaremos uma migra莽茫o do banco do QD. Como essa extra莽茫o de Porto Alegre vai gerar uma demanda razo谩vel, vou deixar para fazer o merge no p贸s migra莽茫o ok?

@lucaspmgomess

Copy link
Copy Markdown
Author

Tranquilo, @diraol ! Sem problema.

Faz sentido deixar a extra莽茫o para depois da migra莽茫o para evitar acrescentar carga nesse momento.

Obrigado pelo retorno e boa migra莽茫o neste fim de semana! 馃檶

@caiotheodoro caiotheodoro left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One risk inline on the API parsing path. Everything else is thorough - the archive/API source split and the transition-period tests give me real confidence in this.

return power
yield Gazette(
date=date,
edition_number=publication["numeroEdicao"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

risk: publication["numeroEdicao"] and isExtra (line 205) use direct key access while linkDownload right above is fetched with .get() and skipped with a warning when missing. If the API ever omits one of these two keys for a single publication, the whole month request raises KeyError and drops every other gazette in that batch. Worth guarding the same way as linkDownload.

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.

3 participants