El coronavirus, una de las pandemias más grandes, ha puesto en peligro a todo el mundo. Junto a esto, es una de las Trending News que todo el mundo tiene este día. En este artículo, recopilaremos datos e imprimiremos estadísticas de Covid-19 en forma legible por humanos. Los datos se extraerán de este sitio web
Requisitos previos:
- Las bibliotecas ‘requests’, ‘bs4’ y ‘texttable’ tienen que estar instaladas –
pip install bs4 pip install requests pip install texttable
Proyecto: pasemos al código, cree un archivo llamado run.py.
Python3
# importing modules import requests from bs4 import BeautifulSoup # URL for scrapping data url = 'https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/' # get URL html page = requests.get(url) soup = BeautifulSoup(page.text, 'html.parser') data = [] # soup.find_all('td') will scrape every # element in the url's table data_iterator = iter(soup.find_all('td')) # data_iterator is the iterator of the table # This loop will keep repeating till there is # data available in the iterator while True: try: country = next(data_iterator).text confirmed = next(data_iterator).text deaths = next(data_iterator).text continent = next(data_iterator).text # For 'confirmed' and 'deaths', # make sure to remove the commas # and convert to int data.append(( country, int(confirmed.replace(', ', '')), int(deaths.replace(', ', '')), continent )) # StopIteration error is raised when # there are no more elements left to # iterate through except StopIteration: break # Sort the data by the number of confirmed cases data.sort(key = lambda row: row[1], reverse = True)
Para imprimir los datos en formato legible por humanos, usaremos la biblioteca ‘ texttable ‘
Python3
# create texttable object import texttable as tt table = tt.Texttable() # Add an empty row at the beginning for the headers table.add_rows([(None, None, None, None)] + data) # 'l' denotes left, 'c' denotes center, # and 'r' denotes right table.set_cols_align(('c', 'c', 'c', 'c')) table.header((' Country ', ' Number of cases ', ' Deaths ', ' Continent ')) print(table.draw())
Producción:
+---------------------------+-------------------+----------+-------------------+ | Country | Number of cases | Deaths | Continent | +===========================+===================+==========+===================+ | United States | 644348 | 28554 | North America | +---------------------------+-------------------+----------+-------------------+ | Spain | 180659 | 18812 | Europe | +---------------------------+-------------------+----------+-------------------+ | Italy | 165155 | 21645 | Europe | +---------------------------+-------------------+----------+-------------------+ ...
NOTA: La salida depende de las estadísticas actuales
¡Quédese en casa, manténgase seguro!
Publicación traducida automáticamente
Artículo escrito por srivathspradeep y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA