是否有可能找到任何给定网站上的所有页面和链接?我想输入一个URL并生成该网站所有链接的目录树。
我查看了HTTrack,但那会下载整个站点,而我只需要目录树。
是否有可能找到任何给定网站上的所有页面和链接?我想输入一个URL并生成该网站所有链接的目录树。
我查看了HTTrack,但那会下载整个站点,而我只需要目录树。
看看 linkchecker 吧,它可以爬取网站(同时遵守robots.txt
),并生成报告。 从那里,您可以编写脚本来创建目录树。
robots.txt
文件,那就意味着你可以放心爬取。 - Hank Gaylinkchecker https://example.com --file-output=csv --verbose
。也可以选择不同的格式。 - laimison如果您在浏览器中拥有开发者控制台(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)
$$
运算符是什么?还是只是一个任意的函数名,就像n=ABC(''a');
一样。我不明白urls
如何获取所有'a'标记元素。你能解释一下吗?我假设这不是jQuery。我们在谈论哪个原型库函数? - zipzit$$()
基本上是 document.querySelectorAll()
的简写。更多信息请参见此链接:https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll - ElectroBit另一个选择可能是
Array.from(document.querySelectorAll("a")).map(x => x.href)
如果你使用$$(
,代码就变得更短了。
Array.from($$("a")).map(x => x.href)
final String openingTags = "(<a [^>]*href=['\"]?|<img[^> ]* src=['\"]?)";
这个与Pattern和Matcher类一起使用可以检测标签的开始。如果您还想要CSS,请添加LINK标签。
然而,这并不像您最初想象的那么容易。许多网页格式不规范。如果您需要考虑所有不规则表达式,以编程方式提取人类“可识别”的所有链接真的很困难。
祝你好运!
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;
}
尝试这段代码...