您的位置:首页 > 其它

正则在小偷程序中的应用(续)

2011-09-15 08:53 169 查看
//获取资源信息
$content = file_get_contents("http://list.sososteel.com/qg/list.html?pg=1&h=".time());
/*对抓取的信息进行处理。取class为listTable的表信息。[^<>]匹配除<>外的所有字符。*?用的是懒惰限定符,代表重复任意次,但尽量少重复。即匹配最短的以<table开始的,以class="listTable"为结束的字符串。如aabbcc字符串,如果用懒惰限定符匹配的话应该是aab。如果用贪婪匹配的话应该aabb。*/
preg_match("/<table [^<>]*? class=\\\"listTable\\\">(.*?)<\/table>/s",$content,$out);
/*抓取tbody的内容,重复一次或多次*/
preg_match_all("/<tbody>(.+?)<\/tbody>/s",$out[1],$outData);
if(empty($outData[1])){
return null;
}else{
$out_arr=array();
//循环输出抓取的内容
foreach($outData[1] as $i=>$key){
//取td的内容
preg_match_all("/<td.*?>(.+?)<\/td>/s",$key,$td);
if(count($td[1])==7){
foreach($td[1] as $j=>$em){
//$em = iconv("gb2312","utf-8",$em);
switch($j){
case 0:continue;break;
case 1:continue;break;
case 2:
preg_match_all("/<a.*?>(.+?)\<\/a>/s",$em,$name);
$out_arr[$i]['name']=$name[1][0];
preg_match_all("/<span.*?>(.+?)\<\/span>/s",$em,$time);
$out_arr[$i]['time']=$time[1][0];
preg_match_all("/<div class=\\\"listText\\\">(.+?)<br \/>/s",$em,$other);
if(empty($other[1])){
$out_arr[$i]['spec']=null;
$out_arr[$i]['mater']=null;
$out_arr[$i]['factory']=null;
}else{
$oth=explode("   ",implode('',$other[1]));
$out_arr[$i]['spec']=trim($oth[0]);
$out_arr[$i]['mater']=trim($oth[1]);
$out_arr[$i]['factory']=trim($oth[2]);
}
$out_arr[$i]['company']=$name[1][1];
continue;break;
case 3:
$out_arr[$i]['city']=trim($em);
continue;break;
case 4:
$out_arr[$i]['price']=trim(strip_tags($em));
continue;break;
}
}
} else
continue;
}
}
print_r($out_arr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class null table tags file