Рубрики
Без рубрики

Создание системы оповещения данных COVID-19 с Python и Selenium (часть 1)

Автоматизация системы оповещения о коронавирусах. Теги с Python, Selenium, Covid19, соскоб.

У меня немного скучно во время блокировки COVID-19 здесь в Нигерии, поэтому я решил поиграть с помощью данных с помощью Python и Selenium.

Первый вопрос, который мне нужен, чтобы ответить, было то, какие данные я хотел бы соскребать, и то, что я буду делать с соскобными данными.

Я решил построить систему, которую соскребает данные COVID-19 из Сайт NCDC И отправляет мне уведомление SMS после того, как в стране будет увеличение случаев.

В этой серии я буду делиться, как я построил эту простую систему, надеюсь, это поможет кому-то построить что-то большее и лучше.

Настройка

Мы будем использовать библиотеку Selenium Python и драйвер браузера (драйвер Chrome или Firefox).

  • Установите селен
   pip install selenium
  • Скачать и установить драйвер браузера

Вы можете скачать любой из драйверов из ссылок ниже:

  1. Хромированный драйвер
  2. Драйвер Firefox

Пойдем!

Теперь, когда мы установили нашу библиотеку и драйвер браузера, пришло время попасть в код.

Создайте свой файл .py и напишите:

from selenium import Chrome
from selenium.webdriver.common.by import By

# Make an instance of the chrome driver
driver = webdriver.Chrome()

# Initiate the browser and visit the link
driver.get('https://covid19.ncdc.gov.ng/')

В указанном выше коде мы импортируем драйвер Chrome From Selenium, а также импортируя «по» частным методам от Web Selenium для выбора того, как мы хотели бы найти элементы. Кроме того, мы инициируем браузер с помощью драйвера Chrome и используя его, чтобы посетить страницу, которая будет соскабливаться.

Если вы предпочитаете использовать драйвер Firefox, ваш код будет выглядеть так:

from selenium import Firefox
from selenium.webdriver.common.by import By

# Make an instance of the firefox driver
driver = webdriver.Firefox()

# Initiate the browser and visit the link
driver.get('https://covid19.ncdc.gov.ng/')

Следующим шагом будет находить элемент, в котором есть эти данные, важно изучать и осматривать, как визуализируется дом веб-сайта. Для нашего NCDC COVID-19 данные, которые мы хотим, находится в таблице с ID Custom3.

table = driver.find_elements(By.XPATH, "//table[@id='custom3']/tbody/tr")
print(table[1].text)

Здесь мы находим элементы XPath, есть так много других методов поиска элементов, и вы можете найти доступные методы на Документация Selenium Python Отказ Мы находим тег таблицы с идентификатором Custom 3, затем перейдите в Tbode и, наконец, тег TR, это возможно, используя Оседание . Затем мы распечатаем второй контент, чтобы увидеть, что у нас есть, прежде чем мы продолжим.

На нашем терминале мы изменим каталог на наш ROOT Project Run Run:

python your_file_name.py

Мы получим это в результате:

Мы видим, что мы смогли получить некоторые данные со страницы, мы будем приступить к заголовку таблицы.

header_tag = table[0].find_elements_by_tag_name('th')

headers = list(map(lambda header: header.text, header_tag))

print (headers)

Выше Код находит теги заголовка таблицы (TH) в первую строку и добавляет их в список заголовков. Запуск скрипта будет распечатать список заголовков:

Наконец, мы получим данные для всех штатов:

results = []


for item in table:
    data = item.find_elements_by_tag_name('td')
    sd = list(map(lambda item: item.text, data))

    results.append(sd)

#Always remember to quit the browser driver when you are done
driver.quit()

results =  list(filter(None, results))
print(results)

Здесь мы создали пустой список под названием «Результаты», передаваемые через элемент строки таблицы и искали элемент по имени TAG ‘TD’. В каждом ряду таблицы у нас есть наши данные для каждого состояния. Затем мы наконец отфильтровали пустые строки и напечатали результаты.

Вуаля !!! У нас есть данные COVID-19 в разных штатах в Нигерии.

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

Наш весь код пока выглядит так:

from selenium import webdriver
from selenium.webdriver.common.by import By
import itertools
import csv


driver = webdriver.Chrome()

# Start the browser and visit the link
driver.get('https://covid19.ncdc.gov.ng/')

table = driver.find_elements(By.XPATH, "//table[@id='custom3']/tbody/tr")

header_tag = table[0].find_elements_by_tag_name('th')

headers = list(map(lambda item: item.text, header_tag))

results = []


for item in table:
    data = item.find_elements_by_tag_name('td')
    sd = list(map(lambda item: item.text, data))

    results.append(sd)

#Always remember to quit the browser driver when you are done
driver.quit()

results =  list(filter(None, results))

print(results)

Я надеюсь, что я смог поделиться своим процессом достаточно хорошо в этой первой части, не стесняйтесь вносить свой вклад, если вы чувствуете, что что-то отсутствует, или есть лучшие способы, чтобы сделать определенные вещи. Я с нетерпением жду вашего вклада (ы). Поймать YA в следующей части.

Оригинал: “https://dev.to/chiefcode/building-a-covid-19-data-alert-system-with-python-and-selenium-part-1-dci”