После поиска в сети информации легко потеряться в изобилии новостей, фальшивых новостей, дезинформации и ужасных данных.
Мировомеры имеют самый простой формат данных и обновляются каждые несколько часов ВОЗ. Однако меня раздражала необходимость бродить по всем странам, чтобы найти свою. Чтобы упростить ежедневное обновление статистики по коронавирусу для моей страны, я модифицировал решение Лазара Гуглетаса и добавил автоматизацию электронной почты, чтобы отправлять мне обновления каждые 24 часа.
Давайте посмотрим внимательнее ...
Установка
- Извлеките данные из Worldometer с помощью Chromedriver и Selenium.
- Выполните поиск в данных и получите статистику по ВАШЕЙ стране.
- Настроить и отправить электронное письмо с обобщенными данными
- Настройте расписание, которое будет повторяться в любое время
ПРИМЕЧАНИЕ. Это делается в Windows и потребует модификации для Linux и MAC.
1. Извлечение данных из уировометров
Сначала нам понадобится веб-драйвер, чтобы открыть в браузере определенный сайт и получить необходимые данные. Для этого явно работает Chromedriver, чтобы управлять браузером Chrome.
Загрузите хромированный драйвер и поместите его в C: \ webdrivers. Вам нужно будет добавить эту папку в переменную Windows PATH для правильного доступа. Если вы застряли, следуйте этой инструкции.
Настройте свою среду
В этом примере в качестве IDE я использовал Atom. Он прост в использовании и имеет отличную встроенную библиотеку для установки сторонних надстроек.
Если вы раньше не использовали Atom, не переживайте! Это довольно просто. Первое, что вам нужно сделать, это убедиться, что у вас есть Platformio-Terminal или какой-либо другой вид терминала, доступный для установки зависимых библиотек.
Откройте атом, перейдите к пакетам и установите терминал Platformio:
Создайте папку проекта
Вам нужно будет собрать файлы проекта в репозиторий, которым легко управлять и которым будет легко получить доступ. Создайте папку проекта, а затем создайте внутри файл с именем
«coronastats.py»
Проще всего это сделать в Atom, но вы можете сделать это по-своему. Как только вы закончите, давайте перейдем к терминалу.
Доступ к окну терминала
Теперь, когда у вас установлен терминал и папка проекта, откройте терминал, нажав кнопку «плюс» в нижнем левом углу панели.
Откроется встроенная версия Windows Powershell, чтобы вы могли выполнять команды. Теперь мы собираемся установить зависимые библиотеки:
Установка Python
- Установите Python - если вы еще этого не сделали, скачайте и следуйте инструкциям по установке. Не забудьте выбрать ДОБАВИТЬ PYTHON В ПУТЬ при установке!
- Проверьте, установлен ли python, набрав в окне терминала:
Установка виртуальной среды
Виртуальная среда - это, по сути, песочница, в которой вы можете добавлять и удалять инструменты, не нарушая установку Python. Всегда полезно использовать такой, когда вы проводите подобные эксперименты!
Введите следующие команды в окно терминала
- pip3 установить virtualenv
- python -m virtualenv venv
- -cd venv
- -cd Сценарии
- -activate.bat
Вышеупомянутые команды создадут активную виртуальную среду, в которой вы можете поиграть.
Установка Selenium
Selenium будет использоваться для очистки данных с веб-адреса. Библиотека позволяет нам отправлять простые команды Python в браузер для выполнения этих инструкций. Более подробную информацию о библиотеке Selenium можно найти здесь.
В окне консоли введите:
pip3 установить селен
Поздравляем, ваша среда настроена!
Настройка веб-скребка
Откройте свой скрипт coronastats.py и введите следующее:
Эти строки импортируют компоненты библиотеки webdriver, а затем создают драйвер. Затем водитель направляется на веб-сайт Worldometer.
* вы можете выполнить этот скрипт, чтобы проверить, открывает ли он хром и правильно ли указывает на мировые измерители, набрав:
- python coronastats.py
ПРИМЕЧАНИЕ.У меня несколько раз возникали проблемы с хромированным драйвером, поэтому я принудительно установил диспетчер при первом запуске сценария, если ваш зависает, в консоли установите:
pip3 установить webdriver_manager
Затем измените свой код следующим образом:
Создание таблицы данных
Теперь, когда мы указываем браузеру Chrome на сайт, мы можем создать таблицу данных и загрузить ее в переменную:
# создать таблицу данных
2. Найдите данные и получите статистику по ВАШЕЙ стране.
Теперь нам нужно извлечь нашу выбранную страну из этой таблицы. Сначала создайте переменную страны, затем извлеките строку из таблицы:
Переменную страны можно изменить на любую страну, для которой вы хотите получать обновления. В моем случае я использую UK, а у меня есть еще один для Южной Африки. Обратите внимание, что в названии Южной Африки есть пробел, который позже может вызвать проблемы при сканировании веб-страниц ...
Теперь, когда мы нашли country_element в таблице, мы можем извлечь строку рядом с ним и поместить ее в блоки данных.
Затем создайте блоки данных строки:
ПРИМЕЧАНИЕ: если в переменной страны есть два слова, например «Южная Африка», вам нужно будет увеличить значение данных на 1, чтобы переместить блок на следующий набор символов, чтобы ваш код выглядел следующим образом:
И это все, что касается веб-сканирования! Молодец!
3. Настройте и отправьте электронное письмо с обобщенными данными.
Для автоматизации электронной почты в python есть библиотека под названием «smtplib». Мы будем использовать это, чтобы настроить автоматические электронные письма после завершения веб-поиска.
Начнем с добавления в скрипт библиотеки smtplib и time.
Затем мы создаем функцию для выполнения требуемого smtp и вызова электронной почты:
Не забудьте правильно отформатировать функцию!
Настройка учетной записи электронной почты
Я использовал для этого Google, поэтому создайте учетную запись google / gmail и войдите в нее. Перейдите сюда. Затем перейдите на вкладку безопасности и найдите раздел, который выглядит следующим образом:
Убедитесь, что для параметра установлено значение ВКЛ. Google предупредит вас об этом, но вы умнее, чем они думают, это просто пустая учетная запись, а не ваша настоящая учетная запись электронной почты ПРАВИЛЬНО?!?! Двигаемся дальше…
Вернитесь к своему сценарию и измените следующее:
Замените «[email protected]» на свою новую учетную запись электронной почты, а «password1234» на новый пароль учетной записи электронной почты. Это дает доступ к smtplib для отправки электронных писем через эту учетную запись.
Затем измените эту строку:
Замените «[email protected]» на предпочтительный адрес электронной почты для отправки.
Теперь вам нужно вызвать функцию в коде и заполнить блоки данных по элементам. Используйте следующее:
Теперь выполните сценарий, используя: python coronastats.py
Если все пойдет хорошо, вы получите электронное письмо!
4. Настройте расписание, которое будет повторяться в любое время.
Он основан исключительно на Windows, потому что он использует планировщик задач Windows, который является встроенной функцией, которая поставляется с каждой ОС Windows.
Откройте планировщик задач Windows,
Создайте новую задачу, нажав «Создать задачу…»
Дайте ему имя, я назвал свой «Coronastats», затем перешел на вкладку «Действия».
На вкладке «Действия» нажмите «Создать», и появится всплывающее окно с диалоговым окном «Новое действие». Убедитесь, что ваше действие - «Запустить программу», затем щелкните текстовое поле «Программа / сценарий».
Теперь программа, которую вы хотите запустить, - это PYTHON, а в оболочке PYTHON вы хотите запустить свой сценарий CORONASTATS.PY.
Нам нужно добавить путь PYTHON в текстовое поле Program / script, поэтому нам нужно получить точный путь к python, выполнив следующие действия:
- Открыть cmd - терминал командной строки в windows
- Введите команду: python -c «import sys; печать (sys.executable) »
- Скопируйте строку, созданную под введенной вами командой, это точный путь к вашей установке python.
- Вставьте путь в текстовое поле Program / script
Затем нам нужно добавить имя сценария ‘coronastats.py’ в текстовое поле Добавить аргументы и путь к файлу в начало в текстовом поле следующим образом:
После того как вы добавили путь к Python, имя файла и его расположение в соответствующие текстовые поля, нажмите ОК .
Перейдите на вкладку «Триггеры» в верхней части диалогового окна «Создать задачу» и добавьте новый триггер. Я создал ежедневный триггер примерно в 13:30 каждый день.
ПРИМЕЧАНИЕ. Если вы застряли, есть несколько ресурсов и замечательных статей, которые помогут вам здесь, а также короткое видео-руководство, объясняющее это здесь.
После того, как вы создали требуемую задачу, остается сделать только одно!
Последняя строка кода
Осталось добавить только одну строчку, чтобы полностью автоматизировать работу с веб-браузером! Вы создали драйвер, отправили его на очистку, и он ждет, пока вы ему скажете, что делать дальше, поэтому ЗАКРЫТЬ!
Вот и все! Вы должны начать получать электронные письма автоматически через определенные промежутки времени для ВАШЕЙ страны! Отличная работа!
Если это вам помогло или показало что-то интересное…
Пожалуйста, хлопните меня в ладоши и подпишитесь! Я буду публиковать регулярные уроки по питону для начинающих еженедельно!
Спасибо, что прочитали, и вымойте руки!