Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить погоду
 
 автор: Петр   (06.04.2009 в 14:50)   письмо автору
 
 

Подскажите, пожалуйста, как теперь брать погоду с сайта гисметео, раньше делал на основе XML-файла и даже выкладывал сюда исходник, но теперь там изменили структуру и дизайн сайта, вроде теперь rss там нет. Как быть? Может есть другой сайт?

  Ответить  
 
 автор: ddhvvn   (06.04.2009 в 15:50)   письмо автору
 
   для: Петр   (06.04.2009 в 14:50)
 

Ммм.. что-то бесплатную версию тоже не могу найти...
Неужели отменили?

  Ответить  
 
 автор: Loki   (06.04.2009 в 15:58)   письмо автору
 
   для: ddhvvn   (06.04.2009 в 15:50)
 

Ага... денег просят...

  Ответить  
 
 автор: Саня   (07.04.2009 в 11:03)   письмо автору
 
   для: Loki   (06.04.2009 в 15:58)
 

Эм... вы о чём?
http://informer.gismeteo.ru/xml.html?index=27612%CC%EE%F1%EA%E2%E0&&lang=ru

  Ответить  
 
 автор: mihdan   (07.04.2009 в 11:16)   письмо автору
 
   для: Саня   (07.04.2009 в 11:03)
 

Не работает по вашей ссылке ничего

PS: не работает в Chrom'е

  Ответить  
 
 автор: ddhvvn   (07.04.2009 в 11:34)   письмо автору
 
   для: mihdan   (07.04.2009 в 11:16)
 

У меня работает =)

  Ответить  
 
 автор: Петр   (07.04.2009 в 11:44)   письмо автору
 
   для: Саня   (07.04.2009 в 11:03)
 

Спасибо, буду делать парсер, позже выложу

  Ответить  
 
 автор: Loki   (07.04.2009 в 12:57)   письмо автору
 
   для: Саня   (07.04.2009 в 11:03)
 

Надо же... а на сайте все ссылки ведут на страницу "подпишитесь на абонемент":)

  Ответить  
 
 автор: Петр   (14.04.2009 в 11:41)   письмо автору
 
   для: Саня   (07.04.2009 в 11:03)
 

<?php
// Загрузка XML-файла (желательно копировать файл к себе на сервер);
$xml file_get_contents("http://informer.gismeteo.ru/xml/29634_1.xml");
$dom = new DOMDocument();
$dom->loadXML($xml);
$dom->validateOnParse true;
$data $dom->getElementsByTagName('FORECAST');
// Обозначения;
$tod = array(0=>"Ночь"1=>"Утро"2=>"День"3=>"Вечер");
$direction = array(0=>"Северный"1=>"Северо-восточный"2=>"Восточный"3=>"Юго-восточный"4=>"Южный"5=>"Юго-западный"6=>"Западный"7=>"Северо-западный");
$cloudiness = array(0=>"Ясно"1=>"Малооблачно"2=>"Облачно"3=>"Пасмурно");
$precipitation = array(4=>"дождь"5=>"ливень"6=>"снег"7=>"снег"8=>"гроза"9=>"нет данных"10=>"без осадков");
// Обход массива;
foreach ($data as $item=>$value) {
    
// Дата;
    
$weather[$item]['date'] = $value->getAttribute('year').'-'.preg_replace("/(^[1-9]{1,1}$)/""0\$1"$value->getAttribute('month')).'-'.$value->getAttribute('day');
    
// Время суток;
    
$weather[$item]['tod'] = $tod[$value->getAttribute('tod')];
    
// Температура;
    
$temperature $value->getElementsByTagName('TEMPERATURE')->item(0);
    
$weather[$item]['temperature'] = $temperature->getAttribute('min').'..'.$temperature->getAttribute('max');
    
// Давление;
    
$pressure $value->getElementsByTagName('PRESSURE')->item(0);
    
$weather[$item]['pressure'] = $pressure->getAttribute('min').'..'.$pressure->getAttribute('max');
    
// Влажность;
    
$relwet $value->getElementsByTagName('RELWET')->item(0);
    
$weather[$item]['relwet'] = $relwet->getAttribute('min').'-'.$relwet->getAttribute('max');
    
// Ветер;
    
$wind $value->getElementsByTagName('WIND')->item(0);
    
$weather[$item]['wind'] = $direction[$wind->getAttribute('direction')].', '.$wind->getAttribute('min').'..'.$wind->getAttribute('max');
    
// Осадки;
    
$phenomena $value->getElementsByTagName('PHENOMENA')->item(0);
    
$weather[$item]['phenomena'] = $cloudiness[$phenomena->getAttribute('cloudiness')].', '.$precipitation[$phenomena->getAttribute('precipitation')];
}
// Массив готовых данных;
print_r($weather);
?>

А есть ли у гисметео погода на 5-10 дней, кто занет?

  Ответить  
 
 автор: mihdan   (14.04.2009 в 12:14)   письмо автору
 
   для: Петр   (14.04.2009 в 11:41)
 

К сожалению. Бесплатно только на сутки :(

  Ответить  
 
 автор: mihdan   (06.04.2009 в 18:07)   письмо автору
 
   для: Петр   (06.04.2009 в 14:50)
 

http://rp5.ru/export.php

результат парсинга можно увидеть на сайте ИнфоШОС

  Ответить  
 
 автор: Петр   (06.04.2009 в 18:32)   письмо автору
 
   для: mihdan   (06.04.2009 в 18:07)
 

а пример скрипта простенький можно?

  Ответить  
 
 автор: Петр   (08.04.2009 в 10:10)   письмо автору
 
   для: mihdan   (06.04.2009 в 18:07)
 

Так и не получилось с парсером, на хостинег отключена такая возможность, хотя хостинг платный 5000р. в год :( Пришлось его взять, чтобы сайт лежал в томже городе, что и 99% посетителей

  Ответить  
 
 автор: mihdan   (08.04.2009 в 10:39)   письмо автору
 
   для: Петр   (08.04.2009 в 10:10)
 

file_get_contents() работает? Если да, то могу кинуть код парсера на регулярках

  Ответить  
 
 автор: Петр   (22.04.2009 в 10:22)   письмо автору
 
   для: mihdan   (08.04.2009 в 10:39)
 

Кто может помочь? Наисал скрипт, который грабит погоду с Яндекса и заисывает в БД, скрипт работат отлично, если запускать его вручную (через адресную строку), а если делать Cron-ом, то возникает проблема, данные не записываются в БД (строка $content получается пустой). Может это после кодировки? Кто-нибудь сталкивался с этим?
<?php
// Получаем данные с сайта;
$text file_get_contents('http://weather.yandex.ru/29634/details/');
// Переводим в нужную кодировку;
$content mb_convert_encoding($text"Windows-1251""UTF-8");
// Шаблон для регулярки;
$pattern '';
// Вырезаем данные;
preg_match_all($pattern$content$regsPREG_SET_ORDER);
// Выводим (записываем или обновляем в БД);
print_r($weather);
?>

  Ответить  
 
 автор: Trianon   (22.04.2009 в 11:44)   письмо автору
 
   для: Петр   (22.04.2009 в 10:22)
 

сравнивайте результат phpinfo()
в первую очередь - нахождение php.ini

  Ответить  
 
 автор: Петр   (22.04.2009 в 12:43)   письмо автору
 
   для: Trianon   (22.04.2009 в 11:44)
 

Спасибо. Позвонил хостерам, сказали, что Cron исользует другие переменные окружения. PhpInfo проверить не могу, доступ к CPanel заблокирован, что-то у них с лицензией напутано, жду когда решат. Хотя можно из самого скрита отправлять почту. Попробую.

  Ответить  
 
 автор: Loki   (22.04.2009 в 12:52)   письмо автору
 
   для: Петр   (22.04.2009 в 12:43)
 

<?
phpinfo
();

  Ответить  
 
 автор: Trianon   (22.04.2009 в 13:26)   письмо автору
 
   для: Loki   (22.04.2009 в 12:52)
 

для вызова из cron этого мало.
Надо как-то узреть результат.
и тут мне ничего стопроцентно надежного в голову не приходит...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования