Как отследить статистику COVID-19 в вашей стране с помощью Python?
@pythonnationВ наши дни COVID-19 это главная и самая обсуждаемая новость во всём мире . На фоне последних событий связанных с COVID-19 я, как и многие, часто начал заходить и проверять информацию, статистику по поводу этого вируса.
И я подумал, чтобы не ходить, не бродить по этим сайтам, процесс получения нужной мне информации можно автоматизировать и поможет мне в этом Python.
В общем, в этой статье мы создадим программу которая автоматизирует получение статистики COVID-19 в одной из стран. Полученные данные мы отобразим в консоли и отправим письмом на почту.
Для реализации этой идеи мы будем использовать Selenium WebDriver, Web Scraping и Python.
Ну что же, приступим?

Во-первых, мы должны выяснить, откуда мы собираемся получать данные. Я решил, что для этого лучше всего использовать сайт www.worldometers.info/coronavirus/ просто потому, что там данные довольно точные.
Вот таблица с сайте, которая показывает нам данные по каждой затронутой стране с различными данными во разных столбцах:

Для написания кода мы будем использовать PyCharm. Давайте создадим проект:

Далее в проекте создадим файл main.py в котором будем писать наш код

Затем через терминал нужно установить Selenium в наш проект с помощью команды pip3 install selenium

Далее скачаем последнюю стабильную версию ChromeDriver и установим его на наш ПК с помощью этих команд:

Приступаем к написанию кода
Импортируем в наш проект все нужные модули

webdriver — позволит нам, давать команды браузеру
smtplib — это встроенный модуль Python, предназначенный для отправки писем и мы его используем в конце когда будем прописывать логику отправки письма на почту.

в self.driver указан путь к chromedriver
Затем нужно создать метод обработчик который будет скрапить.

Метод driver.get перенаправляет к странице URL в параметре, то есть к странице с которой мы будем брать информацию. В нашем случае это страница worldometers.info/coronavirus/ . WebDriver автоматически запустит браузер и будет ждать пока страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль нашему скрипту.
table — с помощью метода find_element_by_xpath() находим таблицу с которой мы будем брать данные.

country_element — указываем страну по которой мы хотим узнать статистику
row — указываем строку с которой будем брать данные
Далее в переменные записываем данные со строки по индексу

Для каждого поля прописываем print для дальнейшего вывода в консоль :

Так как мы еще хотим отправлять данные на почту нам нужно создать send_mail()
и передать ему все поля которые мы отправить на почту.

Как только WebDriver начнёт свою работу браузер автоматически откроется и для того чтобы он сам закрылся, после выполнения всех команд, нужно прописать self.driver.close()
Осталось только прописать логику оправки письма на почту:

Для запуска программы в терминале пишем python3 main.py
И вот результаты:)


Код на GitHub - https://github.com/savvit/covid-19_Python