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

	//获取资源信息
            $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);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值