Сбор статистики 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:
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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.