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

[Feat] MA spider #222

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

Conversation

dehatanes
Copy link
Contributor

Implementando spider para o estado do Maranhão.

Fontes usadas:

Esse spider:

  • Faz o parse do boletim oficial pegando ✅ total oficial (pdf e as vezes no csv) ✅ dados dos municípios (nos csv's) ❌ dados importados (não são disponibilizados em nenhuma das fontes)

Débito:

  • Em alguns csv's (como https://www.saude.ma.gov.br/wp-content/uploads/2022/03/Dados-Gerais-0603.csv) rola um erro ao importá-lo para a rows. Não parece ser muito treta de resolver (segundo essa thread no stackoverflow), mas como não encontrei um jeito de usar esse modo na rows deixei um todo no código para fazer isso depois ao invés de dar uma volta para implementar uma forma alternativa de abrir esses csv's (sendo que isso poderia já estar implementado na rows e eu que mosquei kkk) 😄 (inclusive, se isso já estiver implementado na rows e eu que viajei me avisa que já mudo aqui ⭐ )
    image

  • Queria saber sua opinião sobre criar testes para a parte de extração do total oficial do pdf. Como era uma coisa muito pequena eu não achei necessário criar um extractor para isso (e aí testar o extractor como fizemos nos outros estados). Mas se quiser posso criar o extractor para essa parte ser mais facilmente testável.

@turicas
Copy link
Owner

turicas commented Mar 13, 2022

Esse CSV de exemplo foi criado de maneira bem estranha! Descobri que uma das questões dele é o encoding e também não podemos começar a ler da primeira linha (o cabeçalho mesmo vem depois). Talvez o ideal seja não ler com a rows -- fiz o código abaixo para ler esse exemplo, mas não sei se funciona nos outros CSVs:

filename = "Downloads/Dados-Gerais-0603.csv"
with open(filename, encoding="mac_iceland") as fobj:
    reader = csv.reader(fobj, delimiter=";", lineterminator="\n")
    header = None  # Wait until find the header
    for line in reader:
        # Consider only non-empty lines and first 3 columns
        line = [cell.strip() for cell in line[:3]]
        if not any(line):
            continue
        elif not header:
            if line[0] == "MUNICÍPIOS":
                header = line
            continue
        print(dict(zip(header, line)))

@turicas
Copy link
Owner

turicas commented Mar 13, 2022

Acho que por enquanto não precisamos dos testes para os totais.

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.

2 participants