2012-07-30 73 views
0

我有興趣從鏈接使用JavaScript動態生成的網站中提取鏈接,並且在HTML源代碼中基本上不可見。比如這裏是鏈接通過一個js菜單插入一個例子網站: http://www.stcroixwebsolutions.com/JavaScript鏈接提取器

當我用鼠標在鏈接懸停,我看到了聯繫,但他們沒有在HTML源辨識。

我想輸出的聯繫,像這樣:
http://www.stcroixwebsolutions.com/?110000
http://www.stcroixwebsolutions.com/?110010

你有什麼建議我用它來提取這些鏈接?

+0

您是否試圖將實際的網址存儲在那裏?### number? – 2012-07-30 23:33:20

+0

您是否忘記了StackOverflow可以識別沒有'[]'的URL? AFAIR,它使用像Reddit使用的相同的庫。只需使用它來進行URL識別功能即可。至於鏈接式行爲元素,可以通過'SPAN'元素,CSS規則和'ONCLICK'屬性輕鬆完成。 – Jay 2012-07-30 23:40:37

回答

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; 
} ​ 
+0

這是一個開始。謝謝。 – galaxywatcher 2012-08-08 22:06:43

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。

0

有一個標準document.links集合是文檔中的所有鏈接。簡單地重複一遍。