如何浏览链接数组中的每个链接

时间:2017-05-16 03:20:43

标签: javascript arrays web-scraping tampermonkey

嘿伙计们,我有一个篡改猴子脚本,我正在编写以刮掉网页上的链接,将它们存储到一个数组中,然后以某种方式通过数组的每个链接来获取这些链接中的信息。

所以假设我有一个数组“turls”,其中有25个链接从主页面上抓取,我使用window.location.href进入链接和window.history.back();返回主页面。一旦我返回主页面,脚本将再次运行,并再次进入第一个链接。

我想在我回到主页后可以继续下一个链接,其中所有链接都是GM_setvalue和GM_getvalue,但是如何?我不知道如何通过所有25个链接。

提前感谢,

(同样,urls和turls的console.log结果显示在chrome控制台中,数组为300,数组为25,但是当我输入console.log(urls)或console.log时,url和turls没有定义(turls)进入镀铬控制台。)

// ==/UserScript==


(function() {
'use strict';

   var urls= [];
var turls = [];


$( document ).ready(function() {
    for (var i= document.links.length; i-->0;){
        if (document.links[i].hostname===location.hostname){
            if (document.links[i].href.indexOf("tournaments") > -1) {
                turls.push(document.links[i].href);    
            }
            urls.push(document.links[i].href);
        }
    }    
});


console.log(urls); 
console.log(turls);  






})();

1 个答案:

答案 0 :(得分:0)

试试这个。

// @grant GM_setValue
// @grant GM_getValue

(function() {
  'use strict';

  var turls = GM_getValue('turls', []);
  if(turls.length == 0) {
    $(document).ready(function() {
      for (var i = 0; i<document.links.length; i++) {
        if (document.links[i].hostname === location.hostname) {
          if (document.links[i].href.indexOf("tournaments") > -1) {
            turls.push(document.links[i].href);
          }
        }
      }
    });
  }

  if(turls.length > 0) {
    var turl = turls.shift();
    GM_setValue('turls', turls);
    window.location.href = turl;
  }
})();

要在窗口加载时在TamperMonkey脚本中保留值,即强制重新加载脚本,您需要使用GM_setValueGM_getValue来跨会话存储和检索值。