Как найти все ссылки и страницы на сайте


можно ли найти все страницы и ссылки на любой сайт? Я хотел бы ввести URL-адрес и создать дерево каталогов всех ссылок с этого сайта?

Я посмотрел на HTTrack, но это загружает весь сайт, и мне просто нужно дерево каталогов.

5 74

5 ответов:

проверить это дополнение не совместимо - он будет сканировать сайт (при подчинении robots.txt) и создать отчет. Оттуда вы можете создать сценарий решения для создания дерева каталогов.

или вы можете использовать Google для отображения всех страниц, которые он проиндексировал для этого домена. Например:site:www.bbc.co.uk

Если у вас есть консоль разработчика (JavaScript) в вашем браузере, вы можете ввести этот код:

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

сокращается:

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

Если это вопрос программирования, то я бы предложил вам написать свое собственное регулярное выражение для разбора всего полученного содержимого. Целевые теги-это IMG и A для стандартного HTML. Для JAVA,

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

это вместе с классами Pattern и Matcher должно обнаруживать начало тегов. Добавьте тег ссылки, если вы также хотите CSS.

однако, это не так просто, как вы, возможно, первоначально думали. Многие веб-страницы не очень хорошо сформированы. Извлечение всех ссылок программно, что человек может "распознать" действительно трудно, если вам нужно принять во внимание все нерегулярные выражения.

удачи!

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....