Наверно, каждый вебмастер хоть раз в жизни спрашивал: "Как показать погоду на моем сайте?". Раньше для этого использовали довольно уродливый гаджет канала погоды. Он отвратительно выглядел и его нельзя было менять. Некоторые использовали iframe для того чтобы подгружать внешние данные и отображать их на сайте. Наконец, всегда можно было поставить ссылку "посмотреть погоду". Итак, есть задача - получить данные о погоде из внешнего источника и настроить ее внешний вид. К счастью, теперь есть великолепный инструмент для этого. Google Weather API - легок в использовании и настройке.
![]()
Для начала получим адрес в браузере:
http://www.google.com/ig/api?weather=челябинск
Как понятно из него - погоду мы смотрим в Челябинск. Теперь взглянем на xml:
XML с погодой
<xml_api_reply version="1"> <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0"> <forecast_information> <city data="Chelyabinsk, Province of Chelyabinsk"/> <postal_code data="челябинск"/> <latitude_e6 data=""/> <longitude_e6 data=""/> <forecast_date data="2010-02-10"/> <current_date_time data="2010-02-10 08:00:00 +0000"/> <unit_system data="US"/> </forecast_information> <current_conditions> <condition data="Cloudy"/> <temp_f data="-13"/> <temp_c data="-25"/> <humidity data="Humidity: 73%"/> <icon data="/ig/images/weather/cloudy.gif"/> <wind_condition data="Wind: SE at 4 mph"/> </current_conditions> <forecast_conditions> <day_of_week data="Wed"/> <low data="-17"/> <high data="2"/> <icon data="/ig/images/weather/mostly_sunny.gif"/> <condition data="Mostly Sunny"/> </forecast_conditions> <forecast_conditions> <day_of_week data="Thu"/> <low data="-1"/> <high data="12"/> <icon data="/ig/images/weather/cloudy.gif"/> <condition data="Cloudy"/> </forecast_conditions> <forecast_conditions> <day_of_week data="Fri"/> <low data="5"/> <high data="18"/> <icon data="/ig/images/weather/mostly_sunny.gif"/> <condition data="Partly Sunny"/> </forecast_conditions> <forecast_conditions> <day_of_week data="Sat"/> <low data="6"/> <high data="27"/> <icon data="/ig/images/weather/mostly_sunny.gif"/> <condition data="Partly Sunny"/> </forecast_conditions> </weather> </xml_api_reply>
Поразительно, как все легко. Достаточно выбрать место и нажать Enter. И у нас уже есть данные о погоде в формате XML. Нет рекламы, а представить данные мы можем в любом удобном нам виде. Обратите внимание: я ограничил вывод одним днем. Итак, что дальше? Ну, например, использовать PHP для вывода данных. Взглянем на исходный код:
<?php function getWeather() { $requestAddress = "http://www.google.com/ig/api?weather=челябинск&hl=ru"; // скачиваем данные о погоде $xml_str = file_get_contents($requestAddress,0); // парсим XML $xml = new SimplexmlElement($xml_str); // обрабатываем XML $count = 0; echo '<div id="weather">'; foreach($xml->weather as $item) { foreach($item->forecast_conditions as $new) { echo '<div class="weatherIcon">'; echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>'; echo $new->day_of_week['data']; echo '</div>'; } } echo '</div>'; } getWeather(); ?>
Я надеюсь, эта заметка будет кому-нибудь полезна. Weather API быстро работает, прост и легко настраивается. Убедиться в этом можно на сайте Jetty Doc, где он используется.


Насколько я понимаю, ссылки такого типа ""http://www.google.com/ig/api?weather=челябинск"" уже не работают. Но приведенный Вами сайт отображает гугловскую погоду. Как же его настроить? То есть как получить ХМЛ?
Спасибо.
http://www.google.com/ig/api?weather=челябинск - работает, все нормально
Супер! Спасибо большое за статью! Как раз то что мне нужно для проекта!
Все работает, только у меня сначала ошибка с кодировкой выдалась, так что можно дописать еще "
Ну и для России еще "
http://www.google.com/ig/api?weather=челябинск&oe=utf8&hl=ru
Что-то не работает это запрос на google weather.
При следующий запросах, выдается сообщение что "Информация временно недоступна".
http://www.google.com/ig/api?weather=челябинск
http://www.google.com/ig/api?weather=челябинск
Не работают, но если ввести название города латиницей то все нормально.