Web Scraping de datos COVID-19 usando BeautifulSoup en Python

Índice

Introducción

El coronavirus (COVID-19), un tema que nos ha tocado a todos de alguna manera y que hoy es una de las mayores tendencias mundiales, ha despertado y generado cientos de páginas con estadísticas y datos de interes general. En este artículo, recopilaremos datos utilizando Web Scraping e imprimiremos estadísticas de Covid-19 en forma legible y nos puedan ser útiles para otras funcionalidades. Los datos se extraerán de este sitio web.

Web Scraping de datos COVID-19 usando BeautifulSoup en Python

¿Qué es Web Scraping?

Con varios intentos de frenar el efecto de COVID19 en el mundo, varios trabajos de investigación y medidas innovadoras dependen de los conocimientos adquiridos a partir de los datos correctos. Es posible que la mayoría de los datos necesarios para ayudar a las innovaciones no estén disponibles a través de la interfaz de programación de aplicaciones (API) o formatos de archivo como ".csv" esperando ser descargados, pero solo se puede acceder a ellos como parte de una página web.

Para resolver este inconveniente, utilizamos Web scraping, un término que se utiliza para describir el uso de un programa o algoritmo para extraer y procesar grandes cantidades de datos de la web. Ya sea que sea un científico de datos, un ingeniero o cualquiera que analice grandes cantidades de conjuntos de datos, la capacidad de extraer datos de la web es una habilidad muy útil.

Salida del Código

Web Scraping, salida del código con Python 3

Requisítos y Código

Para realizar la extracción de los datos necesitaremos de las siguientes librerías:

  • pip install bs4
  • pip install requests
  • pip install texttable

Dejaré todo el código en Python 3 y con los comentarios que se agregan en el código podrán tener la información suficiente para analizar el código. Si igualmente hay algún tipo de dudas no olvides dejarla en los comentarios.

import requests
from bs4 import BeautifulSoup
import texttable as tt

# URL para extraer datos
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') raspará cada 
# elemento en la tabla de la URL
data_iterator = iter(soup.find_all('td')) 
 
# data_iterator es el iterador de la tabla
# Este ciclo seguirá repitiéndose hasta que haya
# datos disponibles en el iterador
while True:
    try:
        country = next(data_iterator).text
        confirmed = next(data_iterator).text
        deaths = next(data_iterator).text
        continent = next(data_iterator).text
 
        data.append((
            country,
            int(confirmed.replace(',', '')),
            int(deaths.replace(',', '')),
            continent
        ))
 
    # El error StopIteration se genera cuando
    # no quedan más elementos para
    # iterar
    except StopIteration:
        break
 
# Ordenar los datos por el número de casos confirmados
data.sort(key = lambda row: row[1], reverse = True)


# crea texttable object
table = tt.Texttable()
 
# Agrega una fila vacía al principio para los encabezados
table.add_rows([(None, None, None, None)] + data) 
 
# 'l' denota izquierda, 'c' denota centro,
# y 'r' denota derecha
table.set_cols_align(('c', 'c', 'c', 'c'))  
table.header((' Pais ', ' Numero de Casos ', ' Muertes ', ' Continente '))
 
print(table.draw())

Enlaces de Interes

Quizá te intere algún otro artículo sobre Web Scraping, te los dejo en los siguientes links:

Espero que toda esta información te sea de ayuda para seguir incursionando en el mundo del Scraping.

Nuevamente motivarte a que nos dejes un comentario si el código te ha sido de ayuda.

Saludos, Diego

dcaraballo

Creador de @PythonDiario, amante de la Tecnología y la Naturaleza. Programador Python, C# . NET

  1. Tomas dice:

    Sin duda una técnica de extracción de datos muy valiosa y Python nos lo pone muy fácil.
    Gracias

    1. dcaraballo dice:

      Muchas Gracias Tomas por tu respuesta, sin duda Python, como dices tú, no ayuda mucho a realizar este tipo de tareas. Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey