Сбор статистики COVID-19 с помощью Python и Selenium
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:
| fromselenium importwebdriverfromselenium.webdriver.common.keys importKeysfromtime importsleep driver =webdriver.Chrome("C:/chromedriver.exe")sleep(2)  defextractor():    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])  whileTrue:    extractor()    sleep(60*60) | 
Вывод вышеуказанной программы на пользовательскую консоль выглядит следующим образом:
Всего ящиков: 2, 17, 187 Всего активных дел: 1, 07, 017 Всего вылеченных случаев: 1, 04, 071 Всего смертей: 6 088 Новые кейсы: +2561 Новые восстановленные ящики: +543 Еще больше смертей: +23 // Приведенные выше значения COVID-19 меняются со временем. Ваш результат может отличаться.
Таким образом, приведенный выше скрипт автоматизирует парсинг веб-страниц с помощью Selenium и ежечасно выводит обновленную статистику на консоль пользователя.
Используя это, вы можете создать собственный автоматизированный скрипт для каждого отдельного веб-сайта, который автоматизирует все ваши действия. Честно говоря, нет никаких ограничений на очистку веб-страниц и автоматизацию, и приведенное выше - всего лишь пример, который поможет вам начать работу.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.