Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/08/2008, 15h22   #1
Invité de passage
 
Inscription : juin 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 14
Points : 4
Points : 4
Par défaut Indexer tous les liens d'un site web

Bonjour à tous,

Voila je voudrais savoir comment on peut récupérer tout les liens d'un site web voila j'ai fais un script qui récupère les liens d'une page web mais pas de tout le site, je ne sais pas comment faire, si un logiciel existe de ce type merci de m'en informer voila mon script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
<?php
 
  ini_set('max_execution_time', 0) ; 
  $debut = microtime(true) ; 
 
 
Class Linkers 
{
     public $url = '' ; 
 
	 public function get_links() 
	 {
        $data = file_get_contents($this->url) ;
	    $links_array = array () ; 
	    $pattern = ' #href="[a-zA-z0-9(-|&|/|?|=|)]+"# ';
 
	    while(preg_match( $pattern, $data, $regs ))
	    {  
			$links_array[] = $regs[0] ; 
		    $data  = str_replace($regs[0], "", $data); 
		}
 
	    $load =  array_keys(array_flip($links_array)) ; 
 
 
	    $array_replace = array ('href="','"') ;
        $load = str_replace($array_replace, "", $load) ; 
        $load = preg_replace("#^[/|:|index(.php|.html|.jsp|.pl)]#", $this->url, $load) ;
 
 
		foreach( $load as $key => $value)
        {
 
    		if(preg_match("#.png|.css|.js|.xml|.ico|.jpg|.avi|.bmp#", $value))
              unset( $load[$key] ) ; 
	        if(preg_match("#^$this->url$#", $value) )
			  unset( $load[$key] ) ;
			if(!preg_match("#$this->url#", $value) )
	          unset( $load[$key] ) ; 
 
		} 
		Return $load;
 
    }
 
 
}
 
$linkers = new Linkers  () ;
 
$linkers->url = "http://www.google.fr" ;
 
$data = $linkers->get_links() ;
$nombre = count($data) ;
 
echo 'Url en cours de scan :'. $linkers->url .' <br>Le tableau contient :'. $nombre .' URL(s)<br><br>' ; 
echo '<pre>';
print_r($data);
echo '<pre>';
 
 
 
echo "Script exectuté ". round(microtime(true) - $debut, 4) ." secondes";
?>
Merci de vos réponse ;

Ps: Je sais pas si j'ai posté au bonne endroit
Cresti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2008, 00h22   #2
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut scanner les répertoires

En fait, pour le faire pour tout le site, tu scannes depuis le répertoire racine et tous les sous-répertoires. Dès que tu vois un fichier .php (ou autre extension qui peut contenir des liens), tu l'ouvres et tu exécutes ton script qui cherche tous les liens.

Attention à la méthode utilisée. Il y a toujours plusieurs façons d'arriver au même résultat. Mais par contre, pas toujours à la même vitesse. C'est dans ces moments-là que je savoure les algorithmes.
__________________
Expertise OpenERP - programmation PHP/MySQL
toujours à l'écoute du marché
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h09.


 
 
 
 
Partenaires

Hébergement Web