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
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