turicas / covid19-br

Dados diários mais recentes do coronavírus por município brasileiro
https://brasil.io/dataset/covid19
GNU Lesser General Public License v3.0
530 stars 128 forks source link

BaseCovid19Spider - permitir adicionar casos OU óbito a um município #143

Open endersonmaia opened 4 years ago

endersonmaia commented 4 years ago

Contexto

Para fazer o scraping das página, em alguns casos podemos ter os dados de óbitos e casos em requests separados, e assim precisamos percorrer todos os dados, normalizá-los, antes de fazer um outro loop nos dados normalizados para só aí preencher os dados usando BaseCovid19Spider .add_city_case(city, confirmed, deaths)

Objetivo

Deveria ser possível adicionar casos e óbitos independentemente.

Proposta Implementar métodos independentes, como :

Ou que seja possível os parâmetros em add_city_case sejam opcionais.

Poderíamos chamar add_city_case("Maceió", confirmed=3) e depois chamar add_city_case("Maceio", deaths=1) e fazer o tratamento internamente.

--

Se isso já é possível hoje, me avisa e desconsidera a issue, meu Python ainda não é fluente. ;)

endersonmaia commented 4 years ago

Com esta mudança, seria possível incrementar os dados para os Estados que já contemplam com :

augusto-herrmann commented 4 years ago

Hoje não está assim, mas a classe BaseCovid19Spider poderia ser modificada para interpretar o parâmetro deaths=None, por exemplo, como "não altere o número de óbitos".

Assim, você poderia dar um add_report para cada fonte de dados, cada qual com a sua URL diferente, e nele acrescentar somente aqueles dados que tem para aquela fonte. Para aquele seu exemplo de GO, que tem duas URLs de CSVs, uma para casos e outra para óbitos, você chamaria um add_report para cada um dos CSVs e teria um loop de add_city_case para cada um.

É uma ideia.

lotaviogit commented 4 years ago

Não sou tão experiênte com o Scrapy, mas como os dados são muito bagunçados nas próprias secretarias de saúde, como a de Minas que agora mudou o formato do arquivo csv, e essa de GO que tem 2 csv diferentes, acho que seria melhor dar uma "independência" maior a cada Spider, podendo elas chamar os parses necessários, pois como em GO, seriam necessários 2.

A BaseCovid19Spider continuaria com os mesmos métodos, mas abriria um arquivo csv para o dia da pesquisa, chamaria os parses ou a Spider em si, que populariam o arquivo, e depois fecharia esse arquivo.

Acho que essa seria a melhor opção, pra ser mais fácil mudar as Spiders a medidas que os formatos dos dados forem mudando, e para salvar os dados diariamente, ainda mais agora com essa ameaça de existir uma tentativa de esconde-los.