Skip to content

Commit

Permalink
Adiciona raspador para Barreiras-BA (#863)
Browse files Browse the repository at this point in the history
**AO ABRIR** um Pull Request de um novo raspador (spider), marque com um
`X` cada um dos items do checklist
abaixo. **NÃO ABRA** um novo Pull Request antes de completar todos os
items abaixo.

#### Checklist - Novo spider
- [x] Você executou uma extração completa do spider localmente e os
dados retornados estavam corretos.
- [x] Você executou uma extração por período (`start_date` e `end_date`
definidos) ao menos uma vez e os dados retornados estavam corretos.
- [] Você verificou que não existe nenhum erro nos logs (`log/ERROR`
igual a zero).
- [x] Você definiu o atributo de classe `start_date` no seu spider com a
data do Diário Oficial mais antigo disponível na página da cidade.
- [x] Você garantiu que todos os campos que poderiam ser extraídos foram
extraídos [de acordo com a
documentação](https://docs.queridodiario.ok.org.br/pt/latest/escrevendo-um-novo-spider.html#definicao-de-campos).

#### Descrição

resolve #862 

Validei os erros. Só não marquei o item na checklist, pois há erros, mas
não por conta do raspador.
Algumas páginas de diários estão vazias, por exemplo:
http://www.barreiras.ba.gov.br/diario/pdf/diario924.pdf
  • Loading branch information
ogecece authored Jul 13, 2023
2 parents b6987e9 + 16aadd0 commit 0cb4040
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
58 changes: 58 additions & 0 deletions data_collection/gazette/spiders/ba_barreiras.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import datetime as dt
import re

import scrapy
from dateutil.rrule import YEARLY, rrule

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


class BaBarreirasSpider(BaseGazetteSpider):
name = "ba_barreiras"
TERRITORY_ID = "2903201"
allowed_domains = ["barreiras.ba.gov.br"]
base_url = "https://barreiras.ba.gov.br/diario-oficial"
start_date = dt.date(2008, 1, 2)

def start_requests(self):
for date_of_interest in rrule(
freq=YEARLY, dtstart=self.start_date, until=self.end_date
):
if date_of_interest.year == dt.date.today().year:
base_url = f"{self.base_url}/"
else:
base_url = f"{self.base_url}-{date_of_interest.year}/"

yield scrapy.Request(url=base_url)

def parse(self, response):
editions = response.css("div.content .style16")

for edition in editions:
link = edition.xpath(".//@href").get()
metadata_str = "".join(edition.xpath(".//text()").getall())
raw_date = re.search(r"\d{2}/\d{2}/\d{4}", metadata_str).group()
gazette_date = dt.datetime.strptime(raw_date, "%d/%m/%Y").date()
gazette_edition = re.search(r"Edição (\d+)", metadata_str)

edition_number = ""
if gazette_edition is not None:
edition_number = gazette_edition.group(1)

is_extra_edition = False
if "extra" in metadata_str.lower():
is_extra_edition = True

if gazette_date > self.end_date:
continue
if gazette_date < self.start_date:
return

yield Gazette(
power="executive",
file_urls=[link],
date=gazette_date,
edition_number=edition_number,
is_extra_edition=is_extra_edition,
)
1 change: 1 addition & 0 deletions scripts/enabled_spiders.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"ap_santana",
"ba_acajutiba",
"ba_alagoinhas",
"ba_barreiras",
"ba_campo_formoso",
"ba_feira_de_santana",
"ba_juazeiro",
Expand Down

0 comments on commit 0cb4040

Please sign in to comment.