Pregunta

¿Es posible encontrar todas las páginas y enlaces en CUALQUIER sitio web? ¿Me gustaría ingresar una URL y generar un árbol de directorios con todos los enlaces de ese sitio?

He visto HTTrack pero eso descarga todo el sitio y simplemente necesito el árbol de directorios.

¿Fue útil?

Solución

Echa un vistazo a linkchecker : rastreará el sitio (mientras obedece robots.txt ) y generar un informe. Desde allí, puede crear una solución de script para crear el árbol de directorios.

Otros consejos

Si tiene la consola de desarrollador (JavaScript) en su navegador, puede escribir este código en:

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

Acortado:

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

Si se trata de una pregunta de programación, le sugiero que escriba su propia expresión regular para analizar todos los contenidos recuperados. Las etiquetas de destino son IMG y A para HTML estándar. Para JAVA,

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

esto junto con las clases Pattern y Matcher debería detectar el comienzo de las etiquetas. Agregue la etiqueta LINK si también desea CSS.

Sin embargo, no es tan fácil como podría haber pensado inicialmente. Muchas páginas web no están bien formadas. Extrayendo todos los enlaces mediante programación que el ser humano puede "reconocer" es realmente difícil si necesita tener en cuenta todas las expresiones irregulares.

¡Buena suerte!

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....
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top