голосование
BASH
PHP
Javascript
HTML
Программы
Firebird
Майнинг
PostgreSQL
Хостинг
Железо
Ресурсы
GIT
SEO
Oracle
Python
Мобильные технологии
Ремонт
Mercurial
Заработок на сайте
Docker
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как получить данные Яндекс погоды в формате JSON на PHP

Мне понадобилось вывести на странице погоду от яндекса для своего города. Я знаю несколько сервисов, которые могу показать погоду, но мне хотелось использовать сервис от Яндекса (Яндекс.Погода). Нашел интересную статью на хабре Яндекс.ТвояПогода и решил немного переделать скрипт. Посмотрите эту статью. Мне не нужно выводить информер на странице, а нужно получить данные о погоде в JSON-формате. Подробно о технологии AJAX читайте на странице технология ajax jquery. Я немного переделал скрипт. Создал массив $weatherArr. Он содержит в себе данные о погоде для определённого города. Я присвоил переменной id-города Краснодара.


// список городов https://pogoda.yandex.ru/static/cities.xml
$city_id=34929; // id города
$data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml"; 
// раскладываем xml на массив
$xml = simplexml_load_file($data_file); 
//var_dump($xml) посмотрите на свойства объекта
/* выбираем требуемые параметры (город, температура, пиктограмма 
и тип погоды текстом (облачно, ясно)*/
$city=$xml->fact->station;
$temp=$xml->fact->temperature;
$pic=$xml->fact->image;
$type=$xml->fact->weather_type; 
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
$weatherArr = Array(
                'city_id' => $city_id,
                'city' => (string)$city[0], 
                'img' => 'http://img.yandex.net/i/wiz'.$pic.'.png', 
                'type' => (string)$type,
                'temperature' => $temp."oC"
              );
echo json_encode($weatherArr); 

Скрипт грабит xml-документ и эти значения нужно как-то передать. У скрипта есть один недостаток. Он медленно работает. Функция simplexml_load_file() возвращает объект с довольно большим количеством свойств. Мне нужны строго определённые значения: ID-города, название города, картинка состояния погоды, тип, значение температуры в градусах. Я собираю все значения в один массив, а потом вывожу его в JSON-формате с помощью функции json_encode().

Для ускорения работы этого скрипта вы можете использовать cron планировщик. У вас информация может записываться в базу и вы можете обновлять её через несколько минут.

Значение переменной $xml - это объект. В нем много интересных свойств. Вы можете копаться в них. Меня интересует только несколько параметров и только за сегодняшний день. Думаю там есть прогноз на текущую неделю. Поэкспериментируйте с объектом $xml.

просмотры: 31452, уровень: лёгкий уровень, рейтинг: 3, дата: 2015-07-27 21:00:00
проголосовать:

Комментарии:






поиск
реклама
банеры
домен RU всего за 99 рублей
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.