Помогите с парсером погоды

уважаемые гуру, использую парсер от Для просмотра ссылки Войди или Зарегистрируйся
выложенный выше, но есть одно но, сайт иногда из=за него жутко тормозит, нельзяли как нибудь кешировать результат, ну скажем обновлять только 1 раз в час. а не при каждом запросе странице.
спасибо.
 
При первой загрузке страницы получаешь контент с требуемого сайта и сохраняешь или его, или объект $xml в файл/базу данных, указывая временную метку.
После, перед получением контента, добавляешь проверку на существование ранее сохраненных данных и проверяешь актуальность по временной метке.
 
Sanuch верно пишет.

Сохраняй сразу полученные данные в xml-файл. А затем просто получай данные из этого файла.

Как сохранить полученные данные в этот файл и сделать проверку времени обновления надеюсь разберешься?
 
Никто не пробывал парсить погоду с яндекса?
При моем плохом знании XML не получается подогнать парсеры, лежащие в инете под их структуру...
xml-файл пытаюсь запарсить вот этот:

В результате хочу получить вывод данных на неделю вперед (яндекс скидываеть аж на 10 дней!)

Если сможете помочь, буду очень счастлив :)
 
Никто не пробывал парсить погоду с яндекса?
При моем плохом знании XML не получается подогнать парсеры, лежащие в инете под их структуру...
xml-файл пытаюсь запарсить вот этот:
*** скрытое содержание ***
В результате хочу получить вывод данных на неделю вперед (яндекс скидываеть аж на 10 дней!)
Если сможете помочь, буду очень счастлив :)

Ссылка на XML не работает.
 
Грабится файл xml находящийся по адресу Для просмотра ссылки Войди или Зарегистрируйся.
Данный xml файл кэшируется на заданное время, парсинг производится при помощи регулярных выражений (для уменьшения нагрузки на сервер). Кроме того производится перекодировка данных из UTF-8 в Windows-1251.
Ниже код инициализации класса граббера, а в архиве сам класс и папка с картинками погоды яндекса.
PHP:
    include_once('weather_class.php');
    $wConf['code'] = "UTF-8"; // Кодировка xml-а
    $wConf['curCode'] = "WINDOWS-1251"; // Текущая кодировка
    $wConf['yaUrl'] = "http://export.yandex.ru/weather/?city="; // URL файла погоды без идентификатора города
    $wConf['cityId'] = "27109"; // Идентификатор города http://weather.yandex.ru/choose/
    $wConf['filePath'] = $_SERVER['DOCUMENT_ROOT'].'/weather.xml'; // Пусть до файла кеша с названием файла
    $wConf['cacheTime'] = "3"; // Время кеширования

    $obj = new weather($wConf);
    $arr = $obj->outWeather();
    $wStr = "<div>Сейчас в ".$arr[7]." ".$arr[12]."\xb0C <img src='wico".$arr[10]."' /><br />давление: ".$arr[13]." мм.рт.ст.<br />влажность: ".$arr[14]."%</div>";
    echo $wStr;
 

Вложения

  • weather_yandex_xml.rar
    136,7 KB · Просмотры: 134
  • Нравится
Реакции: Uehe
Переформулирую вопрос:
есть условный код XML:
PHP:
<day date="2019-09-28">
  <moonset>00:19</moonset> 
- <day_part typeid="1" type="morning">
  <wind_speed>1</wind_speed> 
  </day_part>
- <day_part typeid="2" type="day">
  <wind_speed>2</wind_speed> 
  </day_part>
Я могу без особых проблем получить данные <moonset> или данные <day_part typeid="1"> -> <wind_speed>1</wind_speed>, но не получается взять данные из <day_part typeid="2"> -> <wind_speed>2</wind_speed>.
Понимаю, что нужно чуть-чуть доработать код, но не знаю как... Может хуть с этим сможете помочь, с остальным - разобрался :)
Код, который использую:
 
обратите внимание, что day_part является так же массивом
 
Назад
Сверху