我感兴趣的是从使用JavaScript动态生成链接的网站中提取链接,并且在HTML源代码中基本上不可见。例如,这是一个通过js菜单插入链接的示例站点: http://www.stcroixwebsolutions.com/
当我将鼠标悬停在链接上时,我会看到链接,但它们在HTML源代码中无法识别。
我想像这样输出链接:
http://www.stcroixwebsolutions.com/?110000
http://www.stcroixwebsolutions.com/?110010
等
您建议我使用什么来提取这些链接?
答案 0 :(得分:2)
你可以尝试这样的事情......这至少可以让你开始!
function showLinks() {
var links = document.getElementsByTagName( 'a' );
var last = links.length;
var list = {};
// for each anchor...
for (var i = 0; i < last; i++) {
list[links[i].href] = i;
console.log(list);
//' - text=' + links[i].innerHTML + '<br>';
}
var linksList = document.getElementById( 'linksList' );
linksList.innerHTML = list;
}
答案 1 :(得分:1)
var getLinks = function () {
"use strict";
var a = document.getElementsByTagName("a"),
b = a.length,
c = 0,
d = [],
e = "",
f = location.href;
f = f.substring(0, f.lastIndexOf("/"));
for (c = 0; c < b; c += 1) {
e = a[c].getAttribute("href");
if (typeof e === "string" && e.length > 4) {
if (e.charAt(0) === "/" || e.charAt(0) === "?") {
e = f + e;
}
d.push(e);
}
}
return d.join("\n") + "\n" + d.length + " total links";
},
myLinks = getLinks(); //myLinks variable will contain the desired output.
//To output to the console just replace the line with 'return' with this code:
//console.log(d.join("\n") + "\n" + d.length + " total links");
运行此代码以返回列表中给定页面上所有超链接的列表,每个结果都在其自己的行上。
编辑:我现在将相对链接转换为绝对URI。
答案 2 :(得分:0)
标准document.links集合是文档中的所有链接。简单地重复一遍。