Directory 如何查找网站上的所有链接/页面
是否有可能找到任何给定网站上的所有页面和链接?我想输入一个URL并生成该站点所有链接的目录树Directory 如何查找网站上的所有链接/页面,directory,web-crawler,Directory,Web Crawler,是否有可能找到任何给定网站上的所有页面和链接?我想输入一个URL并生成该站点所有链接的目录树 我看过HTTrack,但它下载了整个站点,我只需要目录树。签出-它将对站点进行爬网(同时遵守robots.txt)并生成报告。从那里,您可以编写一个创建目录树的解决方案。如果这是一个编程问题,那么我建议您编写自己的正则表达式来解析所有检索到的内容。目标标记是IMG和一个用于标准HTML的标记。对于JAVA final String openingTags = "(<a [^>]*href=[
我看过HTTrack,但它下载了整个站点,我只需要目录树。签出-它将对站点进行爬网(同时遵守
robots.txt
)并生成报告。从那里,您可以编写一个创建目录树的解决方案。如果这是一个编程问题,那么我建议您编写自己的正则表达式来解析所有检索到的内容。目标标记是IMG和一个用于标准HTML的标记。对于JAVA
final String openingTags = "(<a [^>]*href=['\"]?|<img[^> ]* src=['\"]?)";
final String openingTags=“(]*href=['\'”?”|
这与Pattern和Matcher类一起应该检测标记的开头。如果您还需要CSS,请添加链接标记
然而,这并不像你最初想象的那么容易。许多网页的格式都不好。如果你需要考虑所有不规则的表达式,那么以编程方式提取人类能够“识别”的所有链接确实很困难
祝你好运!函数getalllinks($url){
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;
}
$links=array();
如果($fp=fopen($url,'r')){
$content='';
而($line=fread($fp,1024)){
$content.=$line;
}
}
$textLen=strlen($content);
如果($textLen>10){
$startPos=0;
$valid=true;
while($有效){
$spos=strpos($content,“如果浏览器中有开发人员控制台(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)
另一种选择可能是
Array.from(document.querySelectorAll("a")).map(x => x.href)
用你的$$(
它甚至更短
Array.from($$("a")).map(x => x.href)
非常感谢汉克!完美-正是我所需要的。非常感谢。一个很好的工具。我以前用过“XENU链接侦探”.Linkchecker要详细得多。我自己怎么做?如果网站上没有robots.txt怎么办?@MariusKavansky你怎么手动抓取网站?或者你怎么建立一个抓取程序?我不确定我是否理解你的问题。如果没有robots.txt
文件,那只意味着你可以抓取到你的心。嗨,伙计们,linkchec当我扫描网站时,ker没有为我工作,它只返回一个断开链接的报告。非常小的报告。虽然他们检查了数千个链接,但我看不到这些链接在哪里。使用9.3版,你能帮忙吗?不,不,不,它让小耶稣哭了!关于“Javascript ed”呢URL?比如什么?你是什么意思?我指的是使用Javascript完成的链接。你的解决方案不会显示它。@ElectroBit我真的很喜欢它,但我不确定我在看什么?什么是$
操作符?或者这与n=ABC('a')完全相同;
我不明白URL
是如何获取所有带“a”标记的元素的。你能解释一下吗?我假设它不是jQuery。我们在谈论什么样的原型库函数?@zipzit在一些浏览器中,$$()
基本上是文档的缩写。querySelectorAll()
。此链接上的更多信息:虽然此答案可能是正确且有用的,但如果您在答案中包含一些解释,以解释它如何帮助解决问题,则建议您使用此答案。如果将来出现更改(可能不相关),此选项将特别有用这导致它停止工作,用户需要了解它曾经是如何工作的。呃,它有点长。完全不需要用php以这种方式解析html。php确实能够理解DOM!crawmysite.in-site not existsplus 1-就像您使用的是现代JS。我运行了这个程序,虽然它返回了一些链接,它没有返回顶层的所有.html页面。是否有原因导致所有页面都没有返回到数组列表中?谢谢