Skip to content

Instantly share code, notes, and snippets.

@drmcarvalho
Created April 13, 2020 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drmcarvalho/851323837e57404b55f1567b2275bce4 to your computer and use it in GitHub Desktop.
Save drmcarvalho/851323837e57404b55f1567b2275bce4 to your computer and use it in GitHub Desktop.
covidpytrackerbrazil
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import locale
from typing import NamedTuple
import pandas as pd
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
_urlworldometers = 'https://www.worldometers.info/coronavirus/country/brazil/'
_urlcsvsecretariamunicipios = 'http://www.seade.gov.br/wp-content/uploads/2020/04/Dados-covid-19-municipios.csv'
ReportResult = NamedTuple('ReportResult', [('cases', int), ('deaths', int), ('city', str)])
def scrapworldometershtml():
worldometershtmlresponse = requests.get(_urlworldometers)
if not worldometershtmlresponse.status_code == 200:
return None
content = worldometershtmlresponse.content
if content is None:
return None
soup = BeautifulSoup(content, 'html.parser')
node = soup.find_all(id='maincounter-wrap', limit=2)
if node:
cases = node[0].div.span.text
deaths = node[1].div.span.text
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
cases = locale.atoi(cases)
deaths = locale.atoi(deaths)
return ReportResult(cases=cases, deaths=deaths, city='')
return None
def extractcsvmunicipiosecretariasp(city):
dataframe = pd.read_csv(_urlcsvsecretariamunicipios, encoding='ISO-8859-1', sep=';')
dataframe = dataframe[['Município', 'Total de casos', 'Total de óbitos']]
dataframe.rename(columns={'Município': 'municipio', 'Total de casos': 'casos', 'Total de óbitos': 'mortes'},
inplace=True)
dataframefilter = dataframe.query(f'municipio.str.contains("{city}")')
if len(dataframefilter.index) > 0:
city = dataframefilter.iloc[0].municipio
cases = dataframefilter.iloc[0].casos
deaths = dataframefilter.iloc[0].mortes
return ReportResult(cases=cases, deaths=deaths, city=city)
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment