Показать сообщение отдельно
Старый 22.02.2006, 12:27     # 12
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
согласен... RSS рулит, раньше парсил JS.

вот один из кусочков моего парсера...

Код:
...
$OBLAST = array(
0 => array(33946,"АР Крим","АР Крым"),
1 => array(33562,"Вінницька обл.","Винницкая обл.")
.......
.......
);
...
function GisUrl($id) { global $OBLAST; return "http://informer.gismeteo.ru/xml/".((isset($OBLAST[$id][0]))?$OBLAST[$id][0]:$OBLAST[9][0])."_1.xml"; }
...
foreach($OBLAST as $index=>$oblast)
{
	$interlive = 22; // расстояние между днями в XML
	$url = GisUrl($index);
	$data = join("",file($url));
	$XML = xml_parser_create();
	xml_parse_into_struct($XML,$data,$XML_vals,$XML_index);
	xml_parser_free($XML);
	$DATA['town'] = urldecode($XML_vals[2]['attributes']['SNAME']);
	for ($i=1;$i<=4;$i++)
	{
		$DATA['day'] = $XML_vals[3+$interlive*($i-1)]['attributes']['DAY']*1;
		$DATA['month'] = $XML_vals[3+$interlive*($i-1)]['attributes']['MONTH']*1;
		$DATA['year'] = $XML_vals[3+$interlive*($i-1)]['attributes']['YEAR']*1;
		$DATA['hour'] = $XML_vals[3+$interlive*($i-1)]['attributes']['HOUR']*1;
		$DATA['weekday'] = $XML_vals[3+$interlive*($i-1)]['attributes']['WEEKDAY']*1;
		$DATA['cloudiness'] = $XML_vals[4+$interlive*($i-1)]['attributes']['CLOUDINESS']*1;
		$DATA['precipitation'] = $XML_vals[4+$interlive*($i-1)]['attributes']['PRECIPITATION']*1;
		$DATA['rpower'] = $XML_vals[4+$interlive*($i-1)]['attributes']['RPOWER']*1;
		$DATA['spower'] = $XML_vals[4+$interlive*($i-1)]['attributes']['SPOWER']*1;
		$DATA['pressure'] = ($XML_vals[7+$interlive*($i-1)]['attributes']['MIN']+$XML_vals[7+$interlive*($i-1)]['attributes']['MAX'])/2;
		$DATA['temperature'] = ($XML_vals[10+$interlive*($i-1)]['attributes']['MIN']+$XML_vals[10+$interlive*($i-1)]['attributes']['MAX'])/2;
		$DATA['windspeed'] = ($XML_vals[13+$interlive*($i-1)]['attributes']['MIN']+$XML_vals[13+$interlive*($i-1)]['attributes']['MAX'])/2;
		$DATA['winddirection'] = $XML_vals[13+$interlive*($i-1)]['attributes']['DIRECTION']*1;
		$DATA['relwet'] = ceil(($XML_vals[16+$interlive*($i-1)]['attributes']['MIN']+$XML_vals[16+$interlive*($i-1)]['attributes']['MAX'])/2);
		mysql_query("INSERT INTO `weather` VALUES(".$index.",'".join("','",$DATA)."')");
	}
}
...
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...

Последний раз редактировалось apoc; 22.02.2006 в 12:30.
apoc вне форума