Question

Est-il possible de trouver toutes les pages et les liens sur N'IMPORTE QUEL site Web? J'aimerais entrer une URL et créer une arborescence de répertoires contenant tous les liens de ce site?

J'ai consulté HTTrack mais cela télécharge tout le site et j'ai simplement besoin de l'arborescence des répertoires.

Était-ce utile?

La solution

Découvrez vérificateur de liens : il explorera le site (tout en obéissant à robots.txt ) et générer un rapport. À partir de là, vous pouvez créer une solution pour créer l’arborescence de répertoires.

Autres conseils

Si vous avez la console de développeur (JavaScript) dans votre navigateur, vous pouvez taper ce code sous:

urls = document.querySelectorAll('a'); for (url in urls) console.log(urls[url].href);

Raccourci:

n=$('a');for(u in n)console.log(n[u].href)

S'il s'agit d'une question de programmation, je vous conseillerais alors d'écrire votre propre expression régulière pour analyser tout le contenu récupéré. Les balises cible sont IMG et A pour HTML standard. Pour JAVA,

final String openingTags = "(<a [^>]*href=['\"]?|<img[^> ]* src=['\"]?)";

ceci avec les classes Pattern et Matcher devrait détecter le début des balises. Ajoutez une balise LINK si vous voulez aussi du CSS.

Cependant, ce n’est pas aussi facile que vous le pensiez au départ. De nombreuses pages Web ne sont pas bien formées. Extraire par programmation tous les liens que l’être humain peut "reconnaître" est vraiment difficile si vous devez prendre en compte toutes les expressions irrégulières.

Bonne chance!

function getalllinks($url){
$links = array();
if ($fp = fopen($url, 'r')) {
$content = '';
while ($line = fread($fp, 1024)) {
$content .= $line;
}
}
$textLen = strlen($content); 
if ( $textLen > 10){
$startPos = 0;
$valid = true;
while ($valid){
$spos  = strpos($content,'<a ',$startPos);
if ($spos < $startPos) $valid = false;
$spos     = strpos($content,'href',$spos);
$spos     = strpos($content,'"',$spos)+1;
$epos     = strpos($content,'"',$spos);
$startPos = $epos;
$link = substr($content,$spos,$epos-$spos);
if (strpos($link,'http://') !== false) $links[] = $link;
}
}
return $links;
}
try this code....
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top