Как погоду настроить

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

vgolinsky
Сообщения: 14
Зарегистрирован: Вт янв 15, 2013 12:33 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Как погоду настроить

Сообщение vgolinsky » Пт янв 18, 2013 6:09 pm

может кто подскажет, где почитать про шаблоны поиска? или на примере опишет, что значит город<\/a><br>(.+?)<br \/><a в настройках по-умолчанию?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Как погоду настроить

Сообщение sergejey » Пт янв 18, 2013 6:41 pm

Для вырезания полезных данных используется PHP-функция preg_match (фактически, шаблоны поиска = регулярные выражения), поэтому можно искать в интернете примеры её использования.

Например,
http://phpclub.ru/detail/article/regexp_1

Ну или больше вариантов через Яндекс

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Как погоду настроить

Сообщение anemcov » Пт янв 18, 2013 7:31 pm

vgolinsky писал(а):спасибо огромное. температуру показывает. я так понимаю, мы ищем в html коде нужные данные, а вместо значения температуры ставим (.+?)
А что значит "\" в <\/div>?
Это регулярные выражения, и обратными слэшами \ экранируются слэши прямые /, иначе они будут рассмтриваться как границы выражения. Вобщем, regexper.com вам в помошь.
vgolinsky писал(а):уже столько нагуглил про маски поиска, что в голове все перемешалось....
и как, например, посмотреть ту же температуру на завтра, там тот же код <div class="t_0 ftemp"> ?
Либо расширять условия поиска, либо в регулярном выражении выделять вторую группу типа
<div class="t_0 ftemp">.+?&ordm;C<\/div>.+?<div class="t_0 ftemp">(.+?)&ordm;C<\/div>
vgolinsky
Сообщения: 14
Зарегистрирован: Вт янв 15, 2013 12:33 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Как погоду настроить

Сообщение vgolinsky » Пт янв 18, 2013 9:01 pm

anemcov писал(а):
vgolinsky писал(а):спасибо огромное. температуру показывает. я так понимаю, мы ищем в html коде нужные данные, а вместо значения температуры ставим (.+?)
А что значит "\" в <\/div>?
Это регулярные выражения, и обратными слэшами \ экранируются слэши прямые /, иначе они будут рассмтриваться как границы выражения. Вобщем, regexper.com вам в помошь.
vgolinsky писал(а):уже столько нагуглил про маски поиска, что в голове все перемешалось....
и как, например, посмотреть ту же температуру на завтра, там тот же код <div class="t_0 ftemp"> ?
Либо расширять условия поиска, либо в регулярном выражении выделять вторую группу типа
<div class="t_0 ftemp">.+?&ordm;C<\/div>.+?<div class="t_0 ftemp">(.+?)&ordm;C<\/div>
Спасибо, буду грызть гранит регулярных выражений )))
Devils
Сообщения: 13
Зарегистрирован: Ср фев 20, 2013 9:39 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Как погоду настроить

Сообщение Devils » Чт фев 21, 2013 1:07 am

Как дернуть температуру с этой страницы http://ru-meteo.ru/cehov в веб-переменную? Я че-то не могу понять как строить шаблон поиска.
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Как погоду настроить

Сообщение anemcov » Чт фев 21, 2013 1:26 am

Вот писал человеку в качестве помощи. Может поможнт
Не могу прикрутить с сайта погоды http://m.rp5.ru/8667/ru следующий текст "В 18:00 на метеостанции было -4.6 ºC, облачность 100%, давление 750.5 мм рт. ст., влажность 80%, ветер, дующий с западо-юго-запада, 1 м/сек. Ливневый снег слабый в срок наблюдения или за последний час."
для начала - сохраняем страницу себе на диск в формате html и открываем каким-нить текстовым редактором (который не портит оформление - не рекомендую использовать встренный в Винду Блокнот - лучше использовать что-нить по специализированнее).

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

Дальше - ищем интересующий вас кусок в исходном коде

Копируем участок текста вместе с тэгами. Я для примера беру такой кусок

Код: Выделить всё

на метеостанции  было  <span class="t_0" style="">-5.6 &ordm;C, </span>
Теперь заменяем в этом куске интересующую нас температуру на последовательность символов - "скобка"-"точка"-"плюс"-"знак_вопроса"-"скобка". Это регулярное выражение, означающее:
- "точка" - любой символ
- "плюс" - повторяющийся любое количество раз...
- "знак_вопроса" - ...либо вообще ни разу
- обрамление в скобки - мы хотим получить выражение как результат нашей операции. Если выражение в скобки не брать - оно просто будет одним из условий поиска интересующего нас места.

И последний этап - "экранирование" служебных символов (всякие слэши, треугольные скобки и т.п.) обратным слэшем.

В итоге получаем...

Код: Выделить всё

на метеостанции  было  \<span class="t_0" style=""\>(.+?) &ordm;C, \<\/span\>
Эту строку и вставляем в шаблон поиска.

Теперь программа приопросе веб-переменной скачает страницу по вашему адресу и будет искать в ней подстроку, которая:
1. Начинается с

Код: Выделить всё

на метеостанции  было  <span class="t_0" style="">
2. затем идут несколько (а может и ни одного) символов
3. оканчивается на

Код: Выделить всё

&ordm;C, </span>
Найдя такую строку, вернем то, что соответствовало 2-му пункту, то есть как раз значение температуры.

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

Все, что я написал - проверил у себя - работает.
За это сообщение автора anemcov поблагодарили (всего 2):
Supermin (Вт янв 27, 2015 10:36 pm) • Bagir (Пн фев 23, 2015 12:43 pm)
Рейтинг: 2.33%
Devils
Сообщения: 13
Зарегистрирован: Ср фев 20, 2013 9:39 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Как погоду настроить

Сообщение Devils » Чт фев 21, 2013 10:29 am

anemcov, Спасибо, расписали очень подробно...
Но по аналогии не получается выдернуть температурное значение с http://ru-meteo.ru/cehov
Выбран именно этот сайт, т.к. там более точное значение температуры в отличии от всяких яндексов и прочего.
Получается, что нужна эта строка <td class="temp t-1">−11°</td>
Заэкранировал \<td class="temp t-1"\>(.+?)\<\/td\>
Но эффекта нет :(
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Как погоду настроить

Сообщение anemcov » Чт фев 21, 2013 10:44 am

Вечером смогу глянуть
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Как погоду настроить

Сообщение anemcov » Чт фев 21, 2013 10:16 pm

Devils писал(а):anemcov, Спасибо, расписали очень подробно...
Но по аналогии не получается выдернуть температурное значение с http://ru-meteo.ru/cehov
Выбран именно этот сайт, т.к. там более точное значение температуры в отличии от всяких яндексов и прочего.
Получается, что нужна эта строка <td class="temp t-1">−11°</td>
Заэкранировал \<td class="temp t-1"\>(.+?)\<\/td\>
Но эффекта нет :(
Вроде все правильно. Обратил внимание, что и без маскировки уголков работает. Вот только у меня в коде страницы почему-то t-2. Проверил - работает.

Код: Выделить всё

<td class="temp t-2">(.+?)°<\/td>
Devils
Сообщения: 13
Зарегистрирован: Ср фев 20, 2013 9:39 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Как погоду настроить

Сообщение Devils » Чт фев 21, 2013 10:50 pm

Спасибо, о добрый человек :)
Вот только у меня в коде страницы почему-то t-2
Меня это тоже смущает.. Как бы завтра утром она не сменилась допустим на t-0, и тогда выборка не заработает.
Ответить