Scraping de estadísticas de COVID-19 usando Python y Selenium

1.A   Enlaces de selenium en Python

Los enlaces de Selenium Python proporcionan una API simple para escribir pruebas funcionales utilizando su WebDriver. A través de la API, puede acceder a todas las funcionalidades de Selenium WebDriver sin problemas.

pip install Selenium

Controladores web 1.B  

cromo : https://sites.google.com/a/chromium.org/chromedriver/downloads
Borde : https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox : https://github.com/mozilla/geckodriver/releases
safari : https://webkit.org/blog/6900/webdriver-support-en-safari-10/

 

2.A   Uso de enlaces de Python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

El módulo de suspensión espera hasta que la URL del navegador se haya cargado por completo. Ahora creamos una instancia de navegador webdriver (aquí, Chrome) de la siguiente manera:

driver=webdriver.Chrome("C:/chromedriver.exe")
driver.get("https://www.covid19india.org/")
sleep(2) //Waits for 2 seconds after navigating to the URL

El método driver.get() navega a la página proporcionada por la URL y, posteriormente, chromedriver espera hasta que la página se haya cargado por completo antes de devolver el control al script.

2.B Raspado   web

Hay varias estrategias para localizar elementos en una página. En este caso, usamos el método find_element_by_xpath() para navegar a los valores renderizados en HTML deseados en https://www.covid19india.org/. El script anterior extrae siete valores diferentes de la URL deseada, a saber: 

  • Casos Totales 
  • Casos activos totales
  • Total de casos recuperados
  • Muertes Totales
  • Nuevos Casos Positivos
  • Nuevos Casos Recuperados
  • Muertes adicionales todavía

Estos valores extraídos de las estadísticas de COVID-19 se muestran en la consola del usuario en tiempo real usando Python usando la instrucción print() de la siguiente manera:

def extractor():

    TCases = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[1]/h1/span")

        TActive = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[2]/h1/span")

    TRecov = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[3]/h1/span")

    TDeath = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[4]/h1/span")

        New_Cases = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[1]/h4/span")

        New_Rcov = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[3]/h4/span")

        New_Death = driver.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[2]/div[4]/h4/span")
            print("Total Cases:", TCases.text)
    print("Total Active Cases:", TActive.text)
    print("Total Recovered Cases:", TRecov.text)
    print("Total Deaths:", TDeath.text)
    print("New Cases:", New_Cases.text[1:len(New_Cases.text)-1])
    print("New Recovered Cases:", New_Rcov.text[1:len(New_Rcov.text)-1])
    print("Additional Deaths yet:", New_Death.text[1:len(New_Death.text)-1])


Todo el script se puede automatizar para ejecutarse después de un intervalo dado usando el módulo sleep() de la siguiente manera:

while True:
    extractor()
    sleep(60*60)   // The loop executes after every hour in this case


El ciclo while se ejecuta indefinidamente y ejecuta la función extractor() después de cada hora. 

Aquí está todo el programa de web scraping: 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
  
driver = webdriver.Chrome("C:/chromedriver.exe")
driver.get("https://www.covid19india.org/")
sleep(2)
  
  
def extractor():
    TCases = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[1]/h1 / span")
    TActive = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[2]/h1 / span")
    TRecov = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[3]/h1 / span")
    TDeath = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[4]/h1 / span")
    New_Cases = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[1]/h4 / span")
    New_Rcov = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[3]/h4 / span")
    New_Death = driver.find_element_by_xpath(
        "/html / body / div / div / div[2]/div[1]/div[2]/div[4]/h4 / span")
  
    print("Total Cases:", TCases.text)
    print("Total Active Cases:", TActive.text)
    print("Total Recovered Cases:", TRecov.text)
    print("Total Deaths:", TDeath.text)
    print("New Cases:", New_Cases.text[1:len(New_Cases.text)-1])
    print("New Recovered Cases:", New_Rcov.text[1:len(New_Rcov.text)-1])
    print("Additional Deaths yet:", New_Death.text[1:len(New_Death.text)-1])
  
  
while True:
    extractor()
    sleep(60 * 60)

La salida del programa anterior en la consola del usuario es la siguiente:

Total Cases: 2, 17, 187

Total Active Cases: 1, 07, 017

Total Recovered Cases: 1, 04, 071

Total Deaths: 6, 088

New Cases: +2561
New Recovered Cases: +543
Additional Deaths yet: +23
//The above COVID-19 values differ with time. Your output may differ. 

El script anterior automatiza el web scraping utilizando Selenium e imprime las estadísticas actualizadas en la consola del usuario cada hora. 

Publicación traducida automáticamente

Artículo escrito por sandipan_2224 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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