БЛОГ

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

Задача — получить с сайта 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.
Регулярные выражения можно попробовать оставить как в примере. Теоретически должно сработать.

Оглавление:

Есть вопросы?
Напишите нам: