Страница 2 из 15

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

Добавлено: Пт янв 18, 2013 6:09 pm
vgolinsky
может кто подскажет, где почитать про шаблоны поиска? или на примере опишет, что значит город<\/a><br>(.+?)<br \/><a в настройках по-умолчанию?

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

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

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

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

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

Добавлено: Пт янв 18, 2013 7:31 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>

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

Добавлено: Пт янв 18, 2013 9:01 pm
vgolinsky
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>
Спасибо, буду грызть гранит регулярных выражений )))

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

Добавлено: Чт фев 21, 2013 1:07 am
Devils
Как дернуть температуру с этой страницы http://ru-meteo.ru/cehov в веб-переменную? Я че-то не могу понять как строить шаблон поиска.

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

Добавлено: Чт фев 21, 2013 1:26 am
anemcov
Вот писал человеку в качестве помощи. Может поможнт
Не могу прикрутить с сайта погоды 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-му пункту, то есть как раз значение температуры.

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

Все, что я написал - проверил у себя - работает.

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

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

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

Добавлено: Чт фев 21, 2013 10:44 am
anemcov
Вечером смогу глянуть

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

Добавлено: Чт фев 21, 2013 10:16 pm
anemcov
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>

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

Добавлено: Чт фев 21, 2013 10:50 pm
Devils
Спасибо, о добрый человек :)
Вот только у меня в коде страницы почему-то t-2
Меня это тоже смущает.. Как бы завтра утром она не сменилась допустим на t-0, и тогда выборка не заработает.