Skip to content

Commit

Permalink
Feature/1008 raspador sao jose dos basilios ma (#1264)
Browse files Browse the repository at this point in the history
**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:
- [x] O *layout* não se parece com nenhum caso [da lista de *layouts*
padrão](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/lista-sistemas-replicaveis.html)
- [ ] É 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](https://github.com/okfn-brasil/querido-diario/tree/main/data_collection/gazette/spiders/base)
adequada para o padrão.

#### Código da(s) spider(s)
- [x] O(s) raspador(es) adicionado(s) tem os [atributos de classe
exigidos](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#UFMunicipioSpider).
- [x] O(s) raspador(es) adicionado(s) cria(m) objetos do tipo Gazette
coletando todos [os metadados
necessários](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#Gazette).
- [x] O atributo de classe
[start_date](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#UFMunicipioSpider.start_date)
foi preenchido com a data da edição de diário oficial mais antiga
disponível no site.
- [x] Explicitar o atributo de classe
[end_date](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#UFMunicipioSpider.end_date)
não se fez necessário.
- [x] Não utilizo `custom_settings` em meu raspador.

#### Testes
- [x] Uma coleta-teste **da última edição** foi feita. O arquivo de
`.log` deste teste está anexado na PR.
- [x] Uma coleta-teste **por intervalo arbitrário** foi feita. Os
arquivos de `.log`e `.csv` deste teste estão anexados na PR.
- [x] Uma coleta-teste **completa** foi feita. Os arquivos de `.log` e
`.csv` deste teste estão anexados na PR.

#### Verificações
- [x] Eu experimentei abrir alguns arquivos de diários oficiais
coletados pelo meu raspador e verifiquei eles [conforme a
documentação](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#diarios-oficiais-coletados)
não encontrando problemas.
- [x] Eu verifiquei os arquivos `.csv` gerados pela minha coleta
[conforme a
documentação](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#arquivos-auxiliares)
não encontrando problemas.
- [x] Eu verifiquei os arquivos de `.log` gerados pela minha coleta
[conforme a
documentação](https://docs.queridodiario.ok.org.br/pt-br/latest/contribuindo/raspadores.html#arquivos-auxiliares)
não encontrando problemas.

#### Descrição

Implementação de extração do município São José dos Basilios

__OBS__: Foi implementado com base nas correções dessa PR
#1030
  • Loading branch information
ogecece authored Sep 25, 2024
2 parents 324d769 + d6e4dd4 commit bf7e54d
Showing 1 changed file with 51 additions and 4 deletions.
55 changes: 51 additions & 4 deletions data_collection/gazette/spiders/ma/ma_sao_jose_dos_basilios.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,58 @@
import datetime

from gazette.spiders.base.siganet import BaseSiganetSpider
import dateparser
import scrapy

from gazette.items import Gazette
from gazette.spiders.base import BaseGazetteSpider

class MaSaoJoseDosBasiliosSpider(BaseSiganetSpider):

class MaSaoJoseDosBasiliosSpider(BaseGazetteSpider):
TERRITORY_ID = "2111250"
name = "ma_sao_jose_dos_basilios"
start_date = datetime.date(2015, 11, 27)
allowed_domains = ["transparencia.saojosedosbasilios.ma.gov.br"]
BASE_URL = "https://transparencia.saojosedosbasilios.ma.gov.br/acessoInformacao/diario/diario"
allowed_domains = ["diariooficial.saojosedosbasilios.ma.gov.br"]
BASE_URL = "https://diariooficial.saojosedosbasilios.ma.gov.br"

def start_requests(self):
yield scrapy.Request(f"{self.BASE_URL}/home")

def parse(self, response, page=1):
"""
Parse each page from the results page and yield the gazette issues available and go to next page.
"""
gazette_boxes = response.css(
"div#edicoes-anteriores.table-responsive table.table.table-bordered tbody tr"
)

for gazette_box in gazette_boxes:
edition_number = (
gazette_box.css("td:nth-child(1) a::text")
.get()
.strip()
.split(" ")[3]
.split("/")[0]
)

date = dateparser.parse(
gazette_box.css("td:nth-child(3)::text").get().strip().split(",")[1],
languages=["pt"],
).date()

if date > self.end_date:
continue
elif date < self.start_date:
return

yield Gazette(
date=date,
file_urls=[
f"{self.BASE_URL}/diariooficial/getFile/{edition_number}/download=true"
],
edition_number=edition_number,
power="executive_legislative",
)

next_page_url = response.css("a.page-link[rel='next']::attr(href)").get()
if next_page_url:
yield scrapy.Request(url=next_page_url)

0 comments on commit bf7e54d

Please sign in to comment.