Script de crawl en php

Nouveau WRInaute
bonjour tt le monde !! je suis entrain de rediger un script php qui me permettrait de faire les choses suivants :
1)crawler d'un site internet
2)extraire tous les liens externes et invalides(404 not found)
3)mettre le resultat dans la bdd
voilà c que j'écrit
exter.php
Code:
<?php 

// It may take a whils to spider a website ... 
   set_time_limit(10000); 

// Inculde the phpcrawl-mainclass 
include_once('../PHPCrawl_083/PHPCrawl_083/libs/PHPCrawler.class.php'); 
 //include ('2.php');  
// Extend the class and override the handleDocumentInfo()-method 
 
class MyCrawler extends PHPCrawler 

{   
function handleDocumentInfo(PHPCrawlerDocumentInfo $DocInfo) {

    if (PHP_SAPI == "cli") $lb = "\n"; 
    else {
	$lb = "<br />"; 
	
     
        
    $home_url = parse_url($DocInfo->url ,PHP_URL_HOST ); 
	 
    $file = @file_get_contents($DocInfo->url);
	  
    preg_match_all('/<a.*?href\s*=\s*["\']([^"\']+)[^>]*>.*?<\/a>/si', $file, $urls);
   # Affichage
      
	 echo '<br/>';
	 
	 
	 
     foreach($urls as $url){
     for($i=0;$i<sizeof($url);$i++){
	 
	  
	 $link_url = parse_url( $url[$i],PHP_URL_HOST ); 
	  //and !is_valid_url($url[$i])
	 
	     if (($link_url != $home_url)and is_valid_url($url[$i])) {
	         
	         echo '1'.$lb ; 
	         echo " Page requested:  ".$DocInfo->url." (".$DocInfo->http_status_code.")".$lb; 
             echo '<br/>';
             echo "<font color=green >"."lien externe : ".$url[$i].$lb."</font>";
			 echo '<br/>';
			 flush();
			
	    }
      //if (!in_array($url,$tab)){
        //array_push($tab,$url);
        // }	
	  }
	}
	
   }
 }
}
$crawler = new MyCrawler(); 
$crawler->setURL("http://tunisie-web.org"); 
 
$crawler->addURLFilterRule("#\.(jpg|gif|png|pdf|jpeg|css|js)$#i"); 
$crawler->setWorkingDirectory("C:/Users/mayss/Documents/travailcrawl/"); 
$crawler->go(); 
 
?>
2.php
Code:
 <?php
 function is_valid_url($url){
  
 $array = @get_headers($url);//@ pour ne pas afficher l'erreur

  $string = $array[0];

  if(strpos($string,"404 Not found")) {
      return true;
  } else {
     return false;
  }
 }
 
 ?>
la 3eme tache pas resolu :( , mais le resultat de l'execution n'est pas suffisante ,il ne fait pa ce que je veux :/
 
WRInaute impliqué
c'est pas clair, le point 2 est atteint ou non ?
car s'il est atteint le point 3 ne pose aucun problème quand on sait executer une requete sql insert
 
WRInaute impliqué
if(strpos($string,"404 Not found")) {
return true;
} else {
return false;
}

cela n'affiche donc que les liens en 404, pas ceux en 200 ou autre.
 
Discussions similaires
Haut