Créer liste des URL d'un site
Posté : 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é
J'ai codé ceci :
Je suis un peu perdu :s
Pouvez-vous m'éclairer ?
Merci d'avance,
QMeuh
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é
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