如何find网站上的所有链接/页面

是否有可能find所有网页和链接在任何给定的网站? 我想input一个URL并产生一个来自该网站的所有链接的目录树?

我看了HTTrack,但下载整个网站,我只需要目录树。

检查linkchecker – 它将抓取该网站(同时遵守robots.txt )并生成一个报告。 从那里,你可以编写一个解决scheme来创build目录树。

或者,您可以使用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) 

如果这是一个编程问题,那么我build议你编写自己的正则expression式来parsing所有检索到的内容。 目标标签是标准HTML的IMG和A. 对于JAVA来说,

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

这与Pattern和Matcher类一起应该检测标签的开始。 如果您还想要CSS,请添加LINK标记。

但是,这并不像你想象的那么简单。 许多网页的格式不正确。 如果你需要考虑所有的不规则expression式,通过程序提取所有的链接,人类可以“识别”真的很困难。

祝你好运!

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