|
|
|
| Подскажите, пожалуйста, как теперь брать погоду с сайта гисметео, раньше делал на основе XML-файла и даже выкладывал сюда исходник, но теперь там изменили структуру и дизайн сайта, вроде теперь rss там нет. Как быть? Может есть другой сайт? | |
|
|
|
|
|
|
|
для: Петр
(06.04.2009 в 14:50)
| | Ммм.. что-то бесплатную версию тоже не могу найти...
Неужели отменили? | |
|
|
|
|
|
|
|
для: ddhvvn
(06.04.2009 в 15:50)
| | Ага... денег просят... | |
|
|
|
|
|
|
|
|
для: Саня
(07.04.2009 в 11:03)
| | Не работает по вашей ссылке ничего
PS: не работает в Chrom'е | |
|
|
|
|
|
|
|
для: mihdan
(07.04.2009 в 11:16)
| | У меня работает =) | |
|
|
|
|
|
|
|
для: Саня
(07.04.2009 в 11:03)
| | Спасибо, буду делать парсер, позже выложу | |
|
|
|
|
|
|
|
для: Саня
(07.04.2009 в 11:03)
| | Надо же... а на сайте все ссылки ведут на страницу "подпишитесь на абонемент":) | |
|
|
|
|
|
|
|
для: Саня
(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 дней, кто занет? | |
|
|
|
|
|
|
|
для: Петр
(14.04.2009 в 11:41)
| | К сожалению. Бесплатно только на сутки :( | |
|
|
|
|
|
|
|
для: Петр
(06.04.2009 в 14:50)
| | http://rp5.ru/export.php
результат парсинга можно увидеть на сайте ИнфоШОС | |
|
|
|
|
|
|
|
для: mihdan
(06.04.2009 в 18:07)
| | а пример скрипта простенький можно? | |
|
|
|
|
|
|
|
для: mihdan
(06.04.2009 в 18:07)
| | Так и не получилось с парсером, на хостинег отключена такая возможность, хотя хостинг платный 5000р. в год :( Пришлось его взять, чтобы сайт лежал в томже городе, что и 99% посетителей | |
|
|
|
|
|
|
|
для: Петр
(08.04.2009 в 10:10)
| | file_get_contents() работает? Если да, то могу кинуть код парсера на регулярках | |
|
|
|
|
|
|
|
для: 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, $regs, PREG_SET_ORDER);
// Выводим (записываем или обновляем в БД);
print_r($weather);
?>
|
| |
|
|
|
|
|
|
|
для: Петр
(22.04.2009 в 10:22)
| | сравнивайте результат phpinfo()
в первую очередь - нахождение php.ini | |
|
|
|
|
|
|
|
для: Trianon
(22.04.2009 в 11:44)
| | Спасибо. Позвонил хостерам, сказали, что Cron исользует другие переменные окружения. PhpInfo проверить не могу, доступ к CPanel заблокирован, что-то у них с лицензией напутано, жду когда решат. Хотя можно из самого скрита отправлять почту. Попробую. | |
|
|
|
|
|
|
|
для: Петр
(22.04.2009 в 12:43)
| | | |
|
|
|
|
|
|
|
для: Loki
(22.04.2009 в 12:52)
| | для вызова из cron этого мало.
Надо как-то узреть результат.
и тут мне ничего стопроцентно надежного в голову не приходит... | |
|
|
|