JavaScript链接提取器

JavaScript Link Extractor

本文关键字:提取 链接 JavaScript      更新时间:2024-05-05

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

当我把鼠标悬停在链接上时,我会看到链接,但它们在HTML源代码中是不可识别的。

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

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

你可以试试这样的。。。这至少会让你开始!

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;
}    ​
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。

有一个标准的document.links集合,它是文档中的所有链接。简单地重复一遍。