..присоединяюсь
тоже нужно написать парсер для сбора инфо с доски
for bliking - есть, конечно, готовый - обточить бы его под свои нужды
это читали -
1) Анализ исходного материала
(определить точки входа и выхода для блоков кода, которые нужно парсить)
2) Составить шаблон в виде регулярного выражения, на основании которого будет сделана выборка
3) Получить массив вхождений
4) Вывести массив
вот пример
Код |
---|
01
<?
002
//Выводим на экран сообщение
003
echo "<strong>Погода в Санкт-Петербурге</strong> <hr/></br>";
004
//Получаем содержимое
005
$content = file_get_contents("http://informer.gismeteo.ru/xml/27612_1.xml");
006
//выделяем прогноз на определенное время суток
007
preg_match_all("#<forecast(.*?)</forecast>#is", $content, $forecast);
008
//цикл для каждого прогноза
009
foreach($forecast[1] as $weather) {
010
//считываем информацию о дате и времени прогноза с помощью регулярных выражений
011
preg_match("#day=\"(.*?)\" month=\"(.*?)\" year=\"(.*?)\" hour=\"(.*?)\" tod=\"(.*?)\" predict=\"(.*?)\" weekday=\"(.*?)\">#is", $weather, $srok);//информация о сроке прогнозирования
012
//присваиваем значение дня
013
$day = $srok[1];
014
//присваиваем значение месяца
015
$month = $srok[2];
016
//присваем значение года
017
$year = $srok[3];
018
//выбор варианта времени суток
019
switch($srok[4])
020
{
021
case 3:
022
$daytime = 'ночь';
023
break;
024
case 9:
025
$daytime = 'утро';
026
break;
027
case 15:
028
$daytime = 'день';
029
break;
030
case 21:
031
$daytime = 'вечер';
032
break;
033
default:
034
$daytime = '';
035
break;
036
}
037
//выбор варианта дня недели
038
switch($srok[7])
039
{
040
case 1:
041
$weekday = 'Воскресение';
042
break;
043
case 2:
044
$weekday = 'Понедельник';
045
break;
046
case 3:
047
$weekday = 'Вторник';
048
break;
049
case 4:
050
$weekday = 'Среда';
051
break;
052
case 5:
053
$weekday = 'Четверг';
054
break;
055
case 6:
056
$weekday = 'Пятница';
057
break;
058
case 7:
059
$weekday = 'Суббота';
060
break;
061
default:
062
$weekday = '';
063
break;
064
}
065
//вывод даты, дня недели и времени суток на экран
066
print "<strong>Дата:</strong> $day.$month.$year, $weekday. <strong>Время суток:</strong> $daytime. </br>";
067
068
//считываем информацию об атмосферных явлениях с помощью регулярных выражений
069
preg_match("#<PHENOMENA cloudiness=\"(.*?)\" precipitation=\"(.*?)\" rpower=\"(.*?)\" spower=\"(.*?)\"/>#is", $weather, $phenomena);//атмосферные явления
070
//выбор варианта облачности
071
switch($phenomena[1])
072
{
073
case 0:
074
$cloudness = 'ясно';
075
break;
076
case 1:
077
$cloudness = 'малооблачно';
078
break;
079
case 2:
080
$cloudness = 'облачно';
081
break;
082
case 3:
083
$cloudness = 'пасмурно';
084
break;
085
default:
086
$cloudness = '';
087
break;
088
}
089
//выбор варианта осадков
090
switch($phenomena[2])
091
{
092
case 4:
093
$precipitation = 'дождь';
094
break;
095
case 5:
096
$precipitation = 'ливень';
097
break;
098
case 6:
099
$precipitation = 'снег';
100
break;
101
case 7:
102
$precipitation = 'снег';
103
break;
104
case 8:
105
$precipitation = 'гроза';
106
break;
107
case 9:
108
$precipitation = 'нет данных';
109
break;
110
case 10:
111
$precipitation = 'без осадков';
112
break;
113
default:
114
$precipitation = '';
115
break;
116
}
117
//вывод информации об облачности и осадках на экран
118
print "<strong>Облачность:</strong> $cloudness. <strong>Осадки:</strong> $precipitation. </br>";
119
120
//считываем информацию о давлении с помощью регулярных выражений
121
preg_match("#<PRESSURE max=\"(.*?)\" min=\"(.*?)\"/>#is", $weather, $pressure);//давление
122
//вывод информации о давлении на экран
123
print "<strong>Давление:</strong> $pressure[1]..$pressure[2] мм.рт.ст. </br>";
124
125
//считываем информацию о температуре с помощью регулярных выражений
126
preg_match("#<TEMPERATURE max=\"(.*?)\" min=\"(.*?)\"/>#is", $weather, $temp);//температура
127
//вывод информации о температуре на экран
128
print "<strong>Температура:</strong> $temp[1]°..$temp[2]°C. </br>";
129
130
//считываем информацию о ветре с помощью регулярных выражений
131
preg_match("#<WIND min=\"(.*?)\" max=\"(.*?)\" direction=\"(.*?)\"/>#is", $weather, $wind);//приземный ветер
132
//вывод информации о ветре на экран
133
print "<strong>Ветер:</strong> $wind[1]..$wind[2] м/с. </br>";
134
135
//считываем информацию о влажности воздуха с помощью регулярных выражений
136
preg_match("#<RELWET max=\"(.*?)\" min=\"(.*?)\"/>#is", $weather, $relwet);//относительная влажность воздуха %
137
//вывод информации о влажности воздуха на экран
138
print "<strong>Влажность воздуха:</strong> $relwet[1]%..$relwet[2]%. </br>";
139
140
//рисуем горизонтальную линию (ну это уже из HTML...)
141
print "<hr/>";
142
}
143
//заканчиваем выполнение скрипта
144
?>
|