Сбор статистики COVID-19 с помощью Python и Selenium

Опубликовано: 20 Марта, 2022

Selenium - это инструмент веб-тестирования с открытым исходным кодом, который позволяет пользователям тестировать веб-приложения в разных браузерах и на разных платформах. Он включает в себя множество программного обеспечения, которое разработчики могут использовать для автоматизации веб-приложений, включая IDE, RC, webdriver и Selenium grid, которые служат разным целям. Более того, он служит для очистки динамических веб-страниц, чего не может Beautiful Soup.

1. Привязки селена в Python

Привязки Selenium Python предоставляют простой API для написания функциональных тестов с использованием его WebDriver. Через API вы можете без проблем получить доступ ко всем функциям Selenium WebDriver.

 pip install Selenium

1.B Веб-драйверы

Selenium требует, чтобы веб-драйвер взаимодействовал с выбранным браузером, например Chrome, Safari, Firefox и т. Д. Веб-драйвер - это пакет для настройки взаимодействия с веб-браузером пользователя. Он взаимодействует через общий для всех проводной протокол.

Вы можете легко установить веб-драйверы, совместимые с вашим браузером. Следующие ссылки помогут вам в этом:

Хром : https://sites.google.com/a/chromium.org/chromedriver/downloads
Край : 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-in-safari-10/

2.A Использование привязок Python

Если вы установили привязки Selenium Python, вы можете начать использовать его из Python следующим образом:

 из selenium import webdriver
из selenium.webdriver.common.keys импорт ключей
от времени импортный сон

Модуль сна ожидает, пока URL-адрес браузера не загрузится полностью. Теперь мы создаем экземпляр веб-драйвера браузера (здесь Chrome) следующим образом:

 driver = webdriver.Chrome ("C: /chromedriver.exe")
driver.get ("https://www.covid19india.org/")
sleep (2) // Ожидает 2 секунды после перехода по URL-адресу

Метод driver.get () переходит на страницу, заданную URL-адресом, а затем хромодрайвер ждет, пока страница не будет полностью загружена, прежде чем вернуть управление скрипту.

2.B Веб-парсинг

Существуют различные стратегии размещения элементов на странице. В этом случае мы используем метод find_element_by_xpath () для перехода к желаемым значениям, отображаемым в HTML, на https://www.covid19india.org/. Приведенный выше сценарий извлекает семь различных значений из желаемого URL-адреса, а именно:

  • Всего случаев
  • Всего активных обращений
  • Всего восстановленных случаев
  • Всего смертей
  • Новые положительные случаи
  • Новые восстановленные случаи
  • Дополнительных смертей пока нет

Эти извлеченные значения статистики COVID-19 отображаются на консоли пользователя в режиме реального времени с использованием Python с использованием оператора print () следующим образом:

 def экстрактор ():

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 ("Всего наблюдений:", TCases.text)

print ("Всего активных обращений:", TActive.text)

print ("Всего восстановленных случаев:", TRecov.text)

print ("Всего смертей:", TDeath.text)

print ("Новые случаи:", New_Cases.text [1: len (New_Cases.text) -1])

print ("Новые восстановленные случаи:", New_Rcov.text [1: len (New_Rcov.text) -1])

print ("Еще число смертей:", New_Death.text [1: len (New_Death.text) -1])


Весь сценарий можно автоматизировать для выполнения через заданный интервал с помощью модуля sleep () следующим образом:

 в то время как True:
экстрактор ()
sleep (60 * 60) // В этом случае цикл выполняется через каждый час


Цикл while выполняется бесконечно и каждый час запускает функцию extractor ().

Here’s the entire web scraping program: 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
  
driver = webdriver.Chrome("C:/chromedriver.exe")
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)

Вывод вышеуказанной программы на пользовательскую консоль выглядит следующим образом:

 Всего ящиков: 2, 17, 187

Всего активных дел: 1, 07, 017

Всего вылеченных случаев: 1, 04, 071

Всего смертей: 6 088

Новые кейсы: +2561
Новые восстановленные ящики: +543
Еще больше смертей: +23
// Приведенные выше значения COVID-19 меняются со временем. Ваш результат может отличаться.

Таким образом, приведенный выше скрипт автоматизирует парсинг веб-страниц с помощью Selenium и ежечасно выводит обновленную статистику на консоль пользователя.

Используя это, вы можете создать собственный автоматизированный скрипт для каждого отдельного веб-сайта, который автоматизирует все ваши действия. Честно говоря, нет никаких ограничений на очистку веб-страниц и автоматизацию, и приведенное выше - всего лишь пример, который поможет вам начать работу.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.