2011-11-21 3 views
0

나는 PHP에서 정규 표현식을 사용하여 지정된 페이지에서 링크를 반환하는 aa 함수를 가지고 있습니다. 이제 발견 된 링크의 각 링크를 뒤따라 가고 싶습니다. 여기 PHP는 각 페이지의 각 링크와 링크의 링크로 이동합니다.

그냥 재귀를 수행하고 종료 깊이를 설정 내가

function getLinks($url){ 
$content = file_get_contents($url); 
preg_match_all("|<a [^>]+>(.*)</[^>]+>|U", $content, $links, PREG_PATTERN_ORDER); 
$l_clean = array(); 
foreach($links[0] as $link){ 
     $e_link = explode("href",$link); 
     $e_link = explode("\"",$e_link[1]); 
     $f_link = $e_link[1]; 
     if((substr($f_link,0,strlen('javascript:;')) != "javascript:;")){ 

      $sperator = ""; 

      $first = substr($f_link,0,1); 
      if($first != "/"){ 
       $f_link = "/$f_link"; 
      } 

      if(substr($f_link,0,7) != "http://"){ 
       $f_link = "http://" . $sperator . $_SERVER['HTTP_HOST'] . $f_link;    
      } 
      $f_link = str_replace("///","//",$f_link); 
      if(!in_array($f_link, $l_clean)){ 
       array_push($l_clean , $f_link); 
      } 
    } 
} 
} 
+1

가능한 중복 http : // stackove rflow.com/questions/4736906/i-need-help-making-a-website-crawler-using-php) - 또는 - http://stackoverflow.com/questions/2313107/how-do-i-make-a - 간단한 - 크롤러 - 인 - PHP에서 – mario

답변

1

이 코드입니다 :

function getLinks($url, $depth){ 
    if(--$depth <= 0) return; 
    $content = file_get_contents($url); 
    preg_match_all("|<a [^>]+>(.*)</[^>]+>|U", $content, $links, PREG_PATTERN_ORDER); 
    $l_clean = array(); 
    foreach($links[0] as $link){ 
      $e_link = explode("href",$link); 
      $e_link = explode("\"",$e_link[1]); 
      $f_link = $e_link[1]; 
      if((substr($f_link,0,strlen('javascript:;')) != "javascript:;")){ 

       $sperator = ""; 

       $first = substr($f_link,0,1); 
       if($first != "/"){ 
        $f_link = "/$f_link"; 
       } 

       if(substr($f_link,0,7) != "http://"){ 
        $f_link = "http://" . $sperator . $_SERVER['HTTP_HOST'] . $f_link;    
       } 
       $f_link = str_replace("///","//",$f_link); 
       if(!in_array($f_link, $l_clean)){ 
        array_push($l_clean , $f_link); 
        getLinks($f_link, $depth); 
       } 
     } 
    } 
} 

$links = getLinks("http://myurl.com", 3); 
([I PHP를 사용하여 웹 사이트 크롤러하는 데 도움이 필요]의
관련 문제