加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php模仿百度spider蜘蛛爬虫程序示例

发布时间:2022-02-11 12:21:18 所属栏目:PHP教程 来源:互联网
导读:下面来看一个php模仿百度spider蜘蛛爬虫程序例子,这个代码写得比较高级了我就不分析了,大家有需要的可以进入参考一下吧. 自己用PHP写了个爬虫,基本功能已经实现,有兴趣的可以试试 脚本缺点:1.未对静态页面进行去重处理,2.未对页面内js操作后的结果进行处理
  下面来看一个php模仿百度spider蜘蛛爬虫程序例子,这个代码写得比较高级了我就不分析了,大家有需要的可以进入参考一下吧.
 
  自己用PHP写了个爬虫,基本功能已经实现,有兴趣的可以试试
 
  脚本缺点:1.未对静态页面进行去重处理,2.未对页面内js操作后的结果进行处理
 
  php模仿百度spider蜘蛛爬虫程序例子代码如下:
 
  <?php
  #加载页面
  function curl_get($url){
          $ch=curl_init();
          curl_setopt($ch,CURLOPT_URL,$url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch,CURLOPT_HEADER,1);
          $result=curl_exec($ch);
          $code=curl_getinfo($ch,CURLINFO_HTTP_CODE);
   if($code!='404' && $result){
    return $result;
   }
          curl_close($ch);
  }
  #获取页面url链接
  function get_page_urls($spider_page_result,$base_url){
    $get_url_result=preg_match_all("/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/",$spider_page_result,$out);
    if($get_url_result){
     return $out[1];
    }else{
     return;
    }
  }
  #相对路径转绝对路径
  function xdtojd($base_url,$url_list){
   if(is_array($url_list)){
    foreach($url_list as $url_item){
     if(preg_match("/^(http:\/\/|https:\/\/|javascript:)/",$url_item)){
      $result_url_list[]=$url_item;
     }else {
      if(preg_match("/^\//",$url_item)){
       $real_url = $base_url.$url_item;
      }else{
       $real_url = $base_url."/".$url_item;
      }
      #$real_url = 'http://www.sumpay.cn/'.$url_item;   
                    $result_url_list[] = $real_url;   
     }
    }
    return $result_url_list;
   }else{
    return;
   }
  }
  #删除其他站点url
  function other_site_url_del($jd_url_list,$url_base){
  
   if(is_array($jd_url_list)){
    foreach($jd_url_list as $all_url){
     echo $all_url;
     if(strpos($all_url,$url_base)===0){
      $all_url_list[]=$all_url;
     }
  
    }
    return $all_url_list;
   }else{
    return;
   }
  }
  #删除相同URL
  function url_same_del($array_url){
  
   if(is_array($array_url)){
    $insert_url=array();
    $pizza=file_get_contents("/tmp/url.txt");
                  if($pizza){
     $pizza=explode("\r\n",$pizza);
     foreach($array_url as $array_value_url){
      if(!in_array($array_value_url,$pizza)){
       $insert_url[]=$array_value_url;  
      }
     }
     if($insert_url){
                                  foreach($insert_url as $key => $insert_url_value){
                                          #这里只做了参数相同去重处理
       $update_insert_url=preg_replace('/=[^&]*/','=leesec',$insert_url_value);
                                          foreach($pizza as $pizza_value){
                                           $update_pizza_value=preg_replace('/=[^&]*/','=leesec',$pizza_value);
                                                  if($update_insert_url==$update_pizza_value){
                                                   unset($insert_url[$key]);
                                                          continue;
                                                  }
                                          }
      }
     }
     
    }else{
     $insert_url=array();
     $insert_new_url=array();
     $insert_url=$array_url;
     foreach($insert_url as $insert_url_value){
      $update_insert_url=preg_replace('/=[^&]*/','=leesec',$insert_url_value);
      $insert_new_url[]=$update_insert_url;    
     }
     $insert_new_url=array_unique($insert_new_url);
     foreach($insert_new_url as $key => $insert_new_url_val){
      $insert_url_bf[]=$insert_url[$key];
     }  
     $insert_url=$insert_url_bf;
    }
    return $insert_url;
   }else{
    return;  
   }
  }
  $current_url=$argv[1];
  $fp_puts = fopen("/tmp/url.txt","ab");//记录url列表   
  $fp_gets = fopen("/tmp/url.txt","r");//保存url列表   
  $url_base_url=parse_url($current_url);
  if($url_base_url['scheme']==""){
   $url_base="http://".$url_base_url['host'];
  }else{
   $url_base=$url_base_url['scheme']."://".$url_base_url['host'];
  }
  do{
   $spider_page_result=curl_get($current_url);
   #var_dump($spider_page_result);
   $url_list=get_page_urls($spider_page_result,$url_base);
   #var_dump($url_list);
   if(!$url_list){
    continue;
   }
   $jd_url_list=xdtojd($url_base,$url_list);
   #var_dump($jd_url_list);
   $result_url_arr=other_site_url_del($jd_url_list,$url_base);
   var_dump($result_url_arr);
   $result_url_arr=url_same_del($result_url_arr);  
   #var_dump($result_url_arr);  
   if(is_array($result_url_arr)){   
       $result_url_arr=array_unique($result_url_arr);
              foreach($result_url_arr as $new_url) {   
                  fputs($fp_puts,$new_url."\r\n");   
              }//开源代码Cuoxin.com
   }   
  
  }
  while ($current_url = fgets($fp_gets,1024));//不断获得url   
  preg_match_all("/<a[^>]+href=[\"']([^\"']+)[\"'][^>]+>/",$spider_page_result,$out);
  # echo a href
  #var_dump($out[1]);
  ?> 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读