Парсинг сайта погоды
-
Задача — получить с сайта Gismeteo информацию о погоде с помощью плагина HTTP, привязать эти данные к датчикам температуры и влажности и разместить эту информацию на экране.
1. Добавляем в систему датчики температуры и влажности
Первым шагом нужно добавить в систему необходимые устройства — датчик температуры и датчик влажности. Работа с устройствами показана здесь: Устройства
2. Размещаем эти устройства на экране
Создаем новый виджет «Погода» и размещаем на нем информацию о погоде:
В данном примере я посчитал удобным использовать шаблон представления «Значение в виде текста»:
Перетаскиваем виджет «Погода» на экран:
3. Настраиваем плагин HTTP-Client
Устанавливаем плагин HTTP-Client и переходим к настройке каналов.
Кнопкой «+» добавляем группу каналов:
В поле URL нужно ввести адрес страницы, с которой будем брать температуру и влажность.
В моем примере я ввел адрес страницы Gismeteo с погодой в Чебоксарах на сегодня:
https://www.gismeteo.ru/weather-cheboksary-4361/now/Интервал опроса я обычно ставлю 60 сек. Этого вполне достаточно.
Добавляем каналы.
Для добавления канала нажать на иконку Группы каналов:
Выбираем устройство для привязки к каналу. Для начала получим данные температуры. Соответственно привязку выполняем для датчика температуры Weather_STEMP1. Как вы помните, мы создали этот датчик на первом шаге.
Тип обработки. Мы будем парсить страницу, поэтому тип обработки выбираем «TEXT GET»
Регулярное выражение. Пожалуй это самое сложное в нашей задаче. Про регулярные выражения много информации в интернете. Доступное описание с примерами я нашел в статье Регулярные выражения для чайников. Тем не менее правильно составить регулярное выражение для меня оказалось совсем не простой задачей. Но. Есть отличный помощник — сайт regex101.com
В результате я сформировал регулярное выражение для получения информации о температуре:{"temperature":{"air":{"C":(.*?),"F"
Для датчика влажности у меня получилось такое регулярное выражение:
Влажность<\/div><div class="nowinfo__value">(.*?)<\/div>
В итоге мы сформировали два канала для двух датчиков (температура и влажность):
В принципе на этом настройка каналов завершена. Запускаем плагин, переходим в интерфейс пользователя и видим результат:
Для получения погоды в своем регионе с сайта Gismeteo достаточно изменить URL адрес страницы с погодой.
Вам достаточно войти на сайт Gismeteo с погодой «на сегодня» в своем регионе и скопировать адрес страницы в поле запроса URL.
Регулярные выражения можно попробовать оставить как в примере. Теоретически должно сработать.