JavaScript Link Extractor

时间:2012-07-30 23:19:10

标签: javascript hyperlink extract web-crawler

我感兴趣的是从使用JavaScript动态生成链接的网站中提取链接,并且在HTML源代码中基本上不可见。例如,这是一个通过js菜单插入链接的示例站点: http://www.stcroixwebsolutions.com/

当我将鼠标悬停在链接上时,我会看到链接,但它们在HTML源代码中无法识别。

我想像这样输出链接:
http://www.stcroixwebsolutions.com/?110000
http://www.stcroixwebsolutions.com/?110010

您建议我使用什么来提取这些链接?

3 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情......这至少可以让你开始!

http://jsfiddle.net/Qv4St/

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集合是文档中的所有链接。简单地重复一遍。