0

リンクがJavaScriptで動的に生成され、HTMLソースでは本質的に見えないサイトからリンクを抽出することに興味があります。たとえば、ここにjsメニューを介してリンクが挿入されるサンプルサイトがあります:http: //www.stcroixwebsolutions.com/

リンクの上にマウスを置くと、リンクが表示されますが、HTMLソースでは識別できません。

次のようなリンクを出力したいと思います:
http ://www.stcroixwebsolutions.com/?110000http://www.stcroixwebsolutions.com/
?110010
など。

これらのリンクを抽出するために何を使用することをお勧めしますか?

4

3 に答える 3

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;
}    ​
于 2012-07-30T23:37:54.773 に答える
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");

このコードを実行すると、指定されたページのすべてのハイパーリンクのリストが返され、各結果が 1 行に表示されます。

編集: 相対リンクを絶対 URI に変換するようになりました。

于 2012-07-30T23:55:08.147 に答える
0

ドキュメント内のすべてのリンクである標準のdocument.linksコレクションがあります。単にそれを繰り返します。

于 2012-07-31T00:12:41.027 に答える