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

Feature - Novo spider para Arraial do Cabo - RJ [Fixes #1261] #1275

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

jjpaulo2
Copy link
Contributor

@jjpaulo2 jjpaulo2 commented Sep 21, 2024

Layout do site publicador de diários oficiais

Marque apenas um dos itens a seguir:

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

Novo spider customizado para Arraial do Cabo, conforme #1261. Eu mudei a data de início pois o registro mais antigo que eu consegui encontrar manualmente no site foi em 07/05/2019.

Anexos

Coleta última edição

scrapy crawl rj_arraial_do_cabo -a start_date=2024-09-20 -s LOG_FILE=rj_arraial_do_cabo.log -o rj_arraial_do_cabo.csv

Coleta intervalo

scrapy crawl rj_arraial_do_cabo -a start_date=2024-09-01 -a end_date=2024-09-20 -s LOG_FILE=rj_arraial_do_cabo.log -o rj_arraial_do_cabo.csv

Coleta completa

scrapy crawl rj_arraial_do_cabo -s LOG_FILE=rj_arraial_do_cabo.log -o rj_arraial_do_cabo.csv

start_date = datetime.date(2019, 2, 7)
allowed_domains = ["portal.arraial.rj.gov.br"]
start_urls = ["https://portal.arraial.rj.gov.br/diarios_oficiais_web"]
start_date = date(2019, 5, 7)
Copy link
Contributor

Choose a reason for hiding this comment

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

Iterando com o site passado, pude ver que o primeiro diário disponível seria 11 de abril de 2019

image

Como você determinou a data de 7 de maio de 2019?

Apesar da busca, o de maio é o primeiro disponível?

Copy link
Contributor Author

@jjpaulo2 jjpaulo2 Sep 22, 2024

Choose a reason for hiding this comment

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

De fato! Peguei essa data "no olho" kkkk
Mudei o start_date para 2019-01-01 e rodei um scrapping completo, e de fato a data mais antiga é 2019-04-11.

image

Copy link
Contributor Author

@jjpaulo2 jjpaulo2 Sep 22, 2024

Choose a reason for hiding this comment

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

Eu também tinha adicionado um trecho de código para parar a paginação caso não houvesse mais necessidade de rodar o scrapping, mas acabei removendo esse trecho.

if publish_date < self.start_date:
    return

Percebi que as últimas páginas não estão ordenadas. Isso iria fazer o spider não capturar todos os registros necessários.

Copy link
Member

@trevineju trevineju Sep 23, 2024

Choose a reason for hiding this comment

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

Percebi que as últimas páginas não estão ordenadas. Isso iria fazer o spider não capturar todos os registros necessários.

Isso aqui é uma boa discussão. Acho que elas estão ordenadas por uma lógica que não está transparente pra gente. Já vi outros casos que, por erro humano na hora de adicionar a nova edição, o diário mais novo ficou na última página também.

Como as linhas 25 e 26 fazem filtro, imagino que tenha voltado atrás depois dessa conversa e colocado -- até pq a coleta da última edição e a por intervalo não funcionam sem. O que, pro escopo dessa issue, tá certo mesmo. Mas podemos abrir uma issue para conversar sobre melhorar nossas rotinas de "coleta de segurança", o que acham?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

O único filtro que tá sendo feito hoje é pra validar se o registro está dentro do intervalo de datas que estamos olhando. Mas mesmo que a gente queira pegar apenas o registro de um dia específico, o spider vai olhar todas as páginas.

Essa questão da ordenação ajudaria a gente a identificar caso não fosse mais necessário raspar informações. O que ajudaria a diminuir a quantidade de requisições pro site. Por exemplo, se eu vou raspar até o dia X, e eu sei que nessa página eu achei o último registro desse dia, eu posso encerrar o scrapping ali mesmo.

@trevineju trevineju linked an issue Sep 23, 2024 that may be closed by this pull request
1 task
@trevineju
Copy link
Member

@jjpaulo2, só uma dica: pra vincular a PR à issue que está resolvendo, a mensagem "Fixes #1261" precisa estar no corpo da PR, no título não funciona. (não me pergunte pq hahahaha)

vinculei manualmente agora

Copy link
Member

@trevineju trevineju left a comment

Choose a reason for hiding this comment

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

boa, @jjpaulo2 e @ayharano!

Tava só dando uma olhada na PR, quando lembrei que esse era o caso que estávamos discutindo em #1261 que talvez nem desse pra integrar. Mas parece que a prefeitura corrigiu o site, ne, JP?

Como parei pra olhar, acabei revisando 🙈

Os logs parecem ótimos (uma tistreza aqueles milhares de redirecionamentos - response_status_count/302': 1116 - na coleta completa, mas não tem jeito mesmo, é o site que é feio assim 😿). Só endereçarmos alguns ajustes no código que, por mim, é isso!

Quer complementar com algo, @ayharano?

data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
data_collection/gazette/spiders/rj/rj_arraial_do_cabo.py Outdated Show resolved Hide resolved
@jjpaulo2
Copy link
Contributor Author

@trevineju ajustes feitos.

Seguem os arquivos de coleta completa após os ajustes:

@trevineju
Copy link
Member

Obrigada! Por mim, tá aprovado. Só aguardando Harano comentar também

@jjpaulo2
Copy link
Contributor Author

Oi @ayharano. Você vê mais algum problema? 🫣

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

Successfully merging this pull request may close these issues.

[Novo spider]: Arraial do Cabo - RJ
3 participants