Блог старого компьютера

Блог старого компьютера


Главная PHP Парсер погоды с Яндекса

Парсер погоды с Яндекса

20.06.2013 11:36 Администратор PHP
Печать PDF

Понадобилось мне на скорую руку на сайте сделать погоду, да жетально не прогноз, а реальную погоду которая сейчас на улице. Раньше для этих целей я использовал погоду с сервиса гугл, но в один прекрасный момент он закрыли свою погоду и встала необходимость искать где брать новые данные. После долгих инспектирований интернета решил брать погоду с яндекса. Яндекс о своих погодных данных почему то не особо распространяется.

За пол часа набросал небольшую функцию для получения погоды с яндекса по id города. id города можно получить из этого списка http://weather.yandex.ru/static/cities.xml. Для облегчения поиска id своего города можно нажать комбинацию клавиш для поиска (ctrl+f) и ввести название своего города.

И так моя функция для получения погоды:

function get_weather($id){
$content_file = './cache/weather.xml';
$url='http://export.yandex.ru/weather-ng/forecasts/'.$id.'.xml';
$time_file = './cache/time';
$time_cache = 7200;
$wa =array();
if (file_exists($time_file)){
$time= file($time_file);
}
else{
$time[0]=0;
}

if($time[0]<time()){
$xml_content = file_get_contents($url);
if($xml_content!=''){
if($fp=fopen($content_file, "w+")){
fwrite($fp,$xml_content);
fclose($fp);
}
$new_time = time()+$time_cache;
if($fp=fopen($time_file,"w+")){
fwrite($fp,$new_time);
fclose($fp);
}
$xml = simplexml_load_string($xml_content);
$wa[] = $xml->fact[0]->temperature;
$wa[] = $xml->informer[0]->temperature[0];
$wa[] = $xml->informer[0]->temperature[1];
return $wa;
}
}
else{
$xml= simplexml_load_file($content_file);
$wa[] = $xml->fact[0]->temperature;
$wa[] = $xml->informer[0]->temperature[0];
$wa[] = $xml->informer[0]->temperature[1];
return $wa;
}
}

 Данная функция отдает массив данных. В массве хранится текущая температура воздуха, прогноз температуры  на ночь и на день.

Я использую функцию так:

$out = get_weather('28437');
echo '<div class="weather">
<img src="/templates/beez_20/img/weather.png"> <span class="weather_word">Погода</span> <span class="fact-weather">+'.$out[0].' °С</span>
<div>ночью +'.$out[1].'°С, днем +'.$out[2].'°С</div>
</div>';

 В функции реализован кеш. Вверху функции указаны файлы для кеширования, и время кеширования. Возможно функция слегка кривая, но мне важно было чтоб данные как можно быстрее появились на сайте, если есть дополнения о том как сделать ее лучше пишите. К критике я отношусь положительно, как ни как век живи век учись.

Комментарии  

 
0 #3 Administrator 05.08.2013 05:47
Цитирую Никита:
Ребят помогите сделать парсер погоды я гисметео, я заплачу :) пожалуйста уже весь интернет перерыл ничего не понимаю


Откуда вы хотите именно парсить данные? С морды сайта или из xml файла? Если из xml то дайте на него ссылку парсер набросаю.
Цитировать
 
 
0 #2 Никита 06.07.2013 19:47
Цитирую Никита:
Ребят помогите сделать парсер погоды я гисметео, я заплачу :) пожалуйста уже весь интернет перерыл ничего не понимаю

Мой скайп n.paramonov89
Цитировать
 
 
0 #1 Никита 06.07.2013 19:24
Ребят помогите сделать парсер погоды я гисметео, я заплачу :) пожалуйста уже весь интернет перерыл ничего не понимаю
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела