Créer liste des URL d'un site

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Créer liste des URL d'un site

Créer liste des URL d'un site

par qmeuh » 10 déc. 2006, 00:25

Bonjour,

Ce n'est que le début mais j'aimerais pouvoir créer une liste des URL de mon site et je suis un peu coincé :D
J'ai codé ceci :
<?php

function get_domain($url) {
	preg_match("/^(http:\/\/)?([^\/]+)/i",$url,$chaines);
	return $chaines[1].$chaines[2];
}

function get_document($url) {
   	$file = fopen ($url,"r");
    if (!$file) {
        return null;
    }
    $doc = "";
    while (!feof ($file))
       $doc .= fgets ($file, 1024);
    fclose($file);
    return $doc;
}

$url = "http://www.exemple.com/";
$domaine = get_domain($url);
$html = get_document($url);

$list_url = array ($url);

$list_final = array ();

while (count($list_url) > 0) {
	
	if (!array_key_exists($url, $list_url)) {
		echo $url."<br />";
	}

	preg_match_all ("/(<(a)[^>]*>)/", $html, $matches);

	for ($i=0; $i< count($matches[0]); $i++) {	
		if (preg_match("/href=['|\"]?([^\s'\"]*)['|\"]?/", $matches[0][$i], $matches2)){
			if (!preg_match("/^http:\/\/.*/", $matches2[1])) {
				$to_list = $domaine."/".$matches2[1];
			} else {
				$to_list = $matches2[1];	
			}		
			if (!array_key_exists($to_list, $list_url)) {
				array_push($list_url,$to_list);
			}
		}
	}
	
	unset($list_url[array_search($url, $list_url)]);

	$url = $list_url[array_rand($list_url,1)];	

}


?>
Mais là où ça coince c'est que j'aimerais qu'une fois explorée, la page soit enlevée de l'index d'exploration de la prochaine boucle, ce que je fait avec unset(). Je n'ajoute également une adresse à l'index que lorsqu'elle n'y est pas encore (avec: if (!array_key_exists($to_list, $list_url))). Mais lorsque j'affiche en début de boucle l'adresse du fichier à explorer, je constate que celui-ci revient plus d'une fois, alors que je l'ai supprimé juste auparavant ...

Je suis un peu perdu :s
Pouvez-vous m'éclairer ?

Merci d'avance,
QMeuh