Как найти все ссылки и страницы на сайте
можно ли найти все страницы и ссылки на любой сайт? Я хотел бы ввести URL-адрес и создать дерево каталогов всех ссылок с этого сайта?
Я посмотрел на HTTrack, но это загружает весь сайт, и мне просто нужно дерево каталогов.
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....