В связи с выходом крупного обновления 5.9.х, приглашаем вас принять участие в вебинаре 09.06.2022 в 15:00. Участвовать

Парсинг сайта погоды



  • Задача — получить с сайта Gismeteo информацию о погоде с помощью плагина HTTP, привязать эти данные к датчикам температуры и влажности и разместить эту информацию на экране.

    1. Добавляем в систему датчики температуры и влажности

    Первым шагом нужно добавить в систему необходимые устройства — датчик температуры и датчик влажности. Работа с устройствами показана здесь: Устройства
    http-weather1010-1024x517.jpg

    2. Размещаем эти устройства на экране

    Создаем новый виджет «Погода» и размещаем на нем информацию о погоде:
    http-weather2010-1024x516.jpg

    В данном примере я посчитал удобным использовать шаблон представления «Значение в виде текста»:
    http-weather2020-1024x516.jpg

    Перетаскиваем виджет «Погода» на экран:
    http-weather3010-1024x517.jpg

    3. Настраиваем плагин HTTP-Client

    Устанавливаем плагин HTTP-Client и переходим к настройке каналов.
    Кнопкой «+» добавляем группу каналов:
    http-weather4010-1024x518.jpg

    В поле URL нужно ввести адрес страницы, с которой будем брать температуру и влажность.
    В моем примере я ввел адрес страницы Gismeteo с погодой в Чебоксарах на сегодня:
    https://www.gismeteo.ru/weather-cheboksary-4361/now/

    Интервал опроса я обычно ставлю 60 сек. Этого вполне достаточно.

    Добавляем каналы.

    Для добавления канала нажать на иконку Группы каналов:
    http-weather4020-1024x518.jpg

    Выбираем устройство для привязки к каналу. Для начала получим данные температуры. Соответственно привязку выполняем для датчика температуры Weather_STEMP1. Как вы помните, мы создали этот датчик на первом шаге.

    Тип обработки. Мы будем парсить страницу, поэтому тип обработки выбираем «TEXT GET»

    Регулярное выражение. Пожалуй это самое сложное в нашей задаче. Про регулярные выражения много информации в интернете. Доступное описание с примерами я нашел в статье Регулярные выражения для чайников. Тем не менее правильно составить регулярное выражение для меня оказалось совсем не простой задачей. Но. Есть отличный помощник — сайт regex101.com
    В результате я сформировал регулярное выражение для получения информации о температуре:

    {"temperature":{"air":{"C":(.*?),"F"
    

    Для датчика влажности у меня получилось такое регулярное выражение:

    Влажность<\/div><div class="nowinfo__value">(.*?)<\/div>
    

    В итоге мы сформировали два канала для двух датчиков (температура и влажность):
    http-weather4030-1024x516.jpg

    В принципе на этом настройка каналов завершена. Запускаем плагин, переходим в интерфейс пользователя и видим результат:
    http-weather5010-1024x519.jpg

    Для получения погоды в своем регионе с сайта Gismeteo достаточно изменить URL адрес страницы с погодой.
    Вам достаточно войти на сайт Gismeteo с погодой «на сегодня» в своем регионе и скопировать адрес страницы в поле запроса URL.
    Регулярные выражения можно попробовать оставить как в примере. Теоретически должно сработать.


Log in to reply