голосование
PHP
jQuery
Firebird
BASH
HTML
Ресурсы
GIT
SEO
Oracle
Python
Программы
Хостинг
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как получить данные Яндекс погоды в формате 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.

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

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






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