|
|
|
| Суть проблемы такая, был сайт РеалМетео, парсили с него данные. Добрый человек с данного форума помог. Теперь же сайт они обновили и данные не парсятся. Помогите исправить. Заранее благодарю....
<?php
$page = iconv("utf-8","windows-1251",file_get_contents("http://realmeteo.ru/ekaterinburg/1/current"));
preg_match_all("#<td class=\"meteodata\">(.+?)</td>#",$page,$arr);
$temperature = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",preg_replace("#\..*#","",preg_replace("#<span>.+?</span>#","",$arr[1][0])))); //температура
$humidity = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",preg_replace("#\..*#","",preg_replace("#<span>.+?</span>#","",$arr[1][2]))."%")); //влажность
$pressure = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",preg_replace("#\..*#","",preg_replace("#<span>.+?</span>#","",$arr[1][1])))); //давление
|
| |
|
|
|
|
|
|
|
для: FDmitry
(30.06.2015 в 07:19)
| |
<?php
$json = json_decode(file_get_contents('http://realmeteo.ru/.forecast/USSS/forecast.json'), true);
echo 'Температура: ' . $json['current']['temperature'] . PHP_EOL;
echo 'Влажность: ' . $json['current']['humidity'] . PHP_EOL;
echo 'Давление: ' . $json['current']['pressure'] . PHP_EOL;
|
| |
|
|
|
|
|
|
|
для: Igorek
(30.06.2015 в 12:34)
| | Спасибо! Огроменное ВАМ! Я что то не ожидал, что вы как то по другому сделаете, думал те стоки исправите. Позвольте, я до конца расскажу задачу. Надо полученные данные записать в txt файл. Вот что сейчас получилось с вашим кодом.
<?php
$json = json_decode(file_get_contents('http://realmeteo.ru/.forecast/USSS/forecast.json'), true);
echo 'Температура: ' . $json['current']['temperature'] . PHP_EOL;
echo 'Влажность: ' . $json['current']['humidity'] . PHP_EOL;
echo 'Давление: ' . $json['current']['pressure'] . PHP_EOL;
$f = fopen("./file.txt", "w");
fwrite($f, "\xEF\xBB\xBF", 3); //пишем в начало файла 3 байта (utf-8)
$str = iconv("windows-1251","utf-8"," ".$temperature." ".$humidity." ".$pressure);
fputs($f, $str); //дальше собственно записываем данные в файл
fclose($f);
?>
|
Внутри файла должно получиться (Обратите внимание, что внизу в примере пробелы указал знаком "_" они присутствуют в экспорте это не ошибка, так и надо, чтоб выгружалось)
_________+_2_9_________4_5_%_______7_2_8 | |
|
|
|
|
|
|
|
для: FDmitry
(30.06.2015 в 13:21)
| | Еще, додумался я вот до кого ))))
<?php
$json = json_decode(file_get_contents('http://realmeteo.ru/.forecast/USSS/forecast.json'), true);
$temperature = $json['current']['temperature'];
$humidity = $json['current']['humidity'];
$pressure = $json['current']['pressure'];
$f = fopen("./file.txt", "w");
fwrite($f, "\xEF\xBB\xBF", 3); //пишем в начало файла 3 байта (utf-8)
$str = iconv("windows-1251","utf-8"," ".$temperature." ".$humidity." % ".$pressure);
fputs($f, $str); //дальше собственно записываем данные в файл
fclose($f);
?>
|
Получается вот так и нет пробелов между символами..((((
_________30_________55_%_______756
Надо чтоб вот так было
_________+_2_9_________4_5_%_______7_2_8 | |
|
|
|
|
|
|
|
для: FDmitry
(30.06.2015 в 14:09)
| | странный конечно формат, ежели не секрет - для чего это надобно?
<?php
$json = json_decode(file_get_contents('http://realmeteo.ru/.forecast/USSS/forecast.json'), true);
$temperature = sprintf("%+d", $json['current']['temperature']);
$temperature = implode(' ', str_split($temperature));
$humidity = implode(' ', str_split($json['current']['humidity']));
$pressure = implode(' ', str_split($json['current']['pressure']));
$f = fopen("./file.txt", "w");
fwrite($f, "\xEF\xBB\xBF", 3);
fwrite($f, " " . $temperature . " " . $humidity . " % " . $pressure);
fclose($f);
|
| |
|
|
|
|
|
|
|
для: Igorek
(30.06.2015 в 14:34)
| | Как я могу от вас скрывать))) Вы мне очень помогли. Да собственно это и не секрет. Программа для вывода данных на табло. Кривая программа термо))) | |
|
|
|
|
|
|
|
для: FDmitry
(30.06.2015 в 14:46)
| | Здравствуйте! Люди добрые помогите. И личное обращение к Igorek Вы уже мне как то помогали, могу я вас просить помочь мне еще раз.
Суть проблемы вот какая, я пользуюсь парсингом с 2 источников.
Есть вот такой код, он работает, точнее раньше работал, но они там что то изменили, и появилась проблема, когда температуры перешли в минусовые значения он стал выводить вместо знака "-", слово "minus", моя программа это не понимает и выводит значение как плюсовое.
Вот пример, как выходит в текстовом файле (примере пробелы указал знаком "_")
_________& m i n u s ; 1_________8 8 % _______7 2 3
А надо
_________- 1_________1 0 0 %_______7 5 2
<?php
$page = file_get_contents("http://www.gismeteo.ru/city/weekly/11325/");
preg_match_all("#m_temp c'>(.+?)<#",$page,$arr);
$temperature = $arr[1][0]; //температура
$temperature = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$temperature));
preg_match_all("#wicon hum.+?>(.+?)<#",$page,$arr);
$humidity = $arr[1][0]."%"; //влажность
$humidity = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$humidity));
preg_match_all("#m_press torr'>(.+?)<#",$page,$arr);
$pressure = $arr[1][0]; //давление
$pressure = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$pressure));
$f = fopen("/meteo.txt", "w");
fwrite($f, "\xEF\xBB\xBF", 3); //пишем в начало файла 3 байта (utf-8)
$str = iconv("windows-1251","utf-8"," ".$temperature." ".$humidity." ".$pressure);
fputs($f, $str); //дальше собственно записываем данные в файл
fclose($f);
?>
|
| |
|
|
|
|
|
|
|
для: FDmitry
(05.11.2015 в 07:48)
| | так и поменяйте & m i n u s ; на -
либо до либо после разбора
и всех делов | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2015 в 11:38)
| | Вот вы даете, я то до этого не догадался, а потом сидеть и каждые полчаса менять что ли? ))))
Или я не понял, что вы имели ввиду, можете помочь исправленим в коде? | |
|
|
| |
|
|
|
|
для: FDmitry
(05.11.2015 в 11:42)
| | зачем что-то менять каждые полчаса?
нет. Исправлением в коде не могу.
Потому что тогда вы точно не поймете, а оно мне надо? | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2015 в 15:41)
| | Данные необходимо выводить на табло.
Я особо то и не хочу понимать, мне надо выполнить задачу. Я думаю, что найдется добрый человек, который поможет. Вы видимо не из их числа. | |
|
|
|
|
|
|
|
для: FDmitry
(05.11.2015 в 17:45)
| | Допускаю, что строку
$temperature = $arr[1][0]; //температура
|
придется скорректировать до
$temperature = str_replace('−', '-', $arr[1][0]); //температура
|
Каждые полчаса ничего менять не нужно.
PS.Я действительно не из их числа. | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2015 в 20:17)
| | Вы все верно допускаете! Все получилось. Я ВАС БЛАГОДАРЮ!
Можно еще вопрос, когда будет плюсовое значение, я так полагаю замены на "-" не будет, он просто пропустит это условие. | |
|
|
|
|
|
|
|
для: FDmitry
(05.11.2015 в 21:07)
| | можете добавить аналогичную конструкцию и для +
но насколько я могу себе представить, пока что у вас этой проблемы нету..
и да, весь остальной текст функция замены оставляет как есть, даже если искомого не находит. | |
|
|
|
|
|
|
|
для: FDmitry
(05.11.2015 в 07:48)
| | Здравствуйте Уважаемые спецы! Я уже к вам обращался и вы мне помогли. Очень благодарен вам за это.
Хочу обратиться к вам в очередной раз. Возникла у меня проблема. Неделю назад перестал парсить с сайта. Скорее всего на сайте что то поменялось. Помогите пожалуйста!
Высылаю готовый код который работал
<?php
$page = file_get_contents("http://www.gismeteo.ru/city/weekly/11325/");
preg_match_all("#m_temp c'>(.+?)<#",$page,$arr);
//$temperature = $arr[1][0]; //температура
$temperature = str_replace('−', '-', $arr[1][0]); //температура
$temperature = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$temperature));
preg_match_all("#wicon hum.+?>(.+?)<#",$page,$arr);
$humidity = $arr[1][0]."%"; //влажность
$humidity = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$humidity));
preg_match_all("#m_press torr'>(.+?)<#",$page,$arr);
$pressure = $arr[1][0]; //давление
$pressure = preg_replace("#.$#","",preg_replace("#(.)#","$1 ",$pressure));
$f = fopen("/meteo/meteosensor.txt", "w");
fwrite($f, "\xEF\xBB\xBF", 3); //пишем в начало файла 3 байта (utf-8)
$str = iconv("windows-1251","utf-8"," ".$temperature." ".$humidity." ".$pressure);
fputs($f, $str); //дальше собственно записываем данные в файл
fclose($f);
?>
|
| |
|
|
|
|
|
|
|
для: FDmitry
(18.09.2016 в 20:14)
| | У меня выдало:
| |
|
|
|
|
|
|
|
для: prodigy
(07.10.2016 в 16:35)
| | Да, вы правы! Проверил, все нормально стало! | |
|
|
|
|