Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  aspirateur de liens de site

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aspirateur de liens de site

n°1385733
the_bigboo
Posté le 12-06-2006 à 12:59:27  profilanswer
 

:hello: Salut tout le monde :)
j'essaye de faire un aspirateur de site en PHP. ( Ceux existants ne proposant pas de modules de base de donnée ).
J'ai donc fait une petite classe pour capturer tous les liens de la page dans le but de les explorer par la suite :)
 
Voici la class en question :

Code :
  1. class OpenUrl {
  2. private $AllHtml ;
  3. private $UrlList ;
  4. private $EpuredHtml ;
  5. private $Url ;
  6. private $Start ;
  7. private $End ;
  8. function __construct($Url)
  9. {
  10.  $this->Url = $Url ;
  11.  $this->AllHtml = file_get_contents($Url) ;
  12.  $this->Start = microtime(true) ;
  13. }
  14. public function GetUseFullText()
  15. {
  16.  $ArrayToFind = array('/<script.*?\/script>/si','/<style.*?\/style>/si') ;
  17.  $ArrayToReplace = array(' ',' ') ;
  18.  $return = preg_replace($ArrayToFind,$ArrayToReplace,$this->AllHtml) ;
  19.  $return = strip_tags($return) ;
  20.  return html_entity_decode($return) ;
  21. }
  22. public function GetDomainName()
  23. {
  24.  $Domain =  preg_replace('[http[s]?:\/\/[\/]*]',"",$this->Url) ;
  25.  $DomainArray = explode("/",$Domain);
  26.  $FQDN = explode(".",$DomainArray[0]) ;
  27.  return $FQDN[sizeof($FQDN)-2].'.'.$FQDN[sizeof($FQDN)-1] ;
  28. }
  29. public function GetAllLinks()
  30. {
  31.  $UrlWherePickUp = preg_replace('[http[s]?:\/\/[\/]*]',"",$_GET['url']) ;
  32.  preg_match_all("#href=['|\"](.*)['|\"]#U",$this->AllHtml,$out, PREG_SET_ORDER) ;
  33.  $UrlList = array() ;
  34.  foreach($out As $Link)
  35.  {
  36.   $val = strpos($Link[1],$UrlWherePickUp);
  37.   //echo "<li>".var_dump($val);
  38.   //echo $Link[1]."</li>";
  39.   if(!ereg("^[http|https|ftp]",$Link[1]) and !ereg("^#",$Link[1]))
  40.   $UrlList['semi'][] = realpath($Link[1]).'|' .var_dump(realpath($Link[1])) ;
  41.   elseif($val === false)
  42.   $UrlList['ext'][] = $Link[1] ;
  43.   else
  44.   $UrlList['int'][] = $Link[1] ;
  45.  }
  46.  // Renvoi final
  47.  return $UrlList ;
  48. }
  49. function __destruct()
  50. {
  51.  $this->End = microtime(true) ;
  52.  echo "<br />-----------------------------------------------------------<br />" ;
  53.  $ElapsedTime = round(($this->End - $this->Start),4) ;
  54.  echo "<h1>Temps ecoulé : ".$ElapsedTime." secondes...</h1>" ;
  55.  echo "<br />-----------------------------------------------------------<br />" ;
  56. }
  57. }


Le probleme que je rencontre se situe par exemple avec le site http://www.overgame.com/
Ce site effectue en fait une redirection vers http://www.overgame.com/page/
 
or les liens capturés dans les propriétés href des balises <a> sont souvent des chemins relatifs... ( du genre <a href="./rubrique/page.php">lien</a> ).
et pour les explorer par la suite je reconstitue le chemin absolu en collant le chemin relatif avec l'url de la page que je suis en train d'explorer...
 
j'obtiens donc http://www.overgame.com/page8212.htm au lien de http://www.overgame.com/page/page8212.htm
et je planche un peu la dessus...
 
Donc si vous avez des idées je suis preneur !

mood
Publicité
Posté le 12-06-2006 à 12:59:27  profilanswer
 

n°1386045
the_bigboo
Posté le 12-06-2006 à 19:38:47  profilanswer
 

up !

n°1386255
the_bigboo
Posté le 13-06-2006 à 09:46:42  profilanswer
 

up !

n°1386282
zapan666
Tout est relatif
Posté le 13-06-2006 à 10:35:48  profilanswer
 

Regarde conmment les autres aspirateurs sont fait (si Free software ils sont)
 
exemple : http://www.httrack.com/page/2/fr/index.html?pat (ecrit en C)
 
Sinon etant donne que tu recupere le domaine, si tu vois que le liens n'est pas absolu, tu prend le relatif et tu rajoute le domaine devant et pouf, ca devient un chemin absolu. Enfin je crois


---------------
my flick r - Just Tab it !
n°1386376
the_bigboo
Posté le 13-06-2006 à 12:10:57  profilanswer
 

en fait je cherche une version web ou un module executable depuis Cron


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  aspirateur de liens de site

 

Sujets relatifs
Cacher nom de pages et arborescence site web?Php Nuke ou autre pour site Petites Annonces
Tester les performances d'un site webConvertir les URL en liens cliquables
Chargement d'un site webCookie pour log permanent sur site web
aide pour un site de jeu de role en phpGros problème de liens dans mon site..
Ouvrir un site depuis un autre 
Plus de sujets relatifs à : aspirateur de liens de site


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)