2016-06-08 61 views
0

我想加载一个url并检查页面的所有http和https链接,并将这些链接放到两个不同的文件中。我使用的JavaScript,当我尝试写的所有只有最后一个被写入文件中的HTTP URL,而有些则没有written.Below是代码如何通过页面的链接循环并在java脚本中写入文件中的所有http链接

var jsdom = require("jsdom"); 
var request = require('request'); 
var fs = require("fs"); 

jsdom.env(
    'http://www.google.com', ["http://code.jquery.com/jquery.js"], 
    function(error, window) { 
    console.log("There are", window.$('.body').find('img').length, "img"); 
    var $ = window.$; 
    $($('.body').find('a')).each(function() { 
     var src = $(this).attr('href'); 
     if (src.startsWith('http://')) { 
     console.log(src) 
     fs.writeFile('out.html', src, 
      function(err) { 
      if (err) throw error; 
      }) 
     } 
    }) 
    }); 

如何使这个代码写的所有http链接到out.html文件。现在它只是写入最后一个链接。

+0

这似乎是在一个,2个基本问题2个问题的一个可能我补充。除此之外,你确定你没有覆盖你每次添加一个新的时写的最后一个? – Ryan

+0

循环已完成,我可以在控制台中看到结果,但在写入文件时只有最后一个正在写入 – nodemongo1

+0

因此您不确定。我同意迈克在这一个,你可能没有阅读所有的文件,并错过了关于writeFile错综复杂的部分。 – Ryan

回答

3

当我尝试写的所有,而其他人不写

那是因为你使用fs.writeFile其中或者创建一个新的文件,只有最后一个被写入文件中的HTTP URL或用您传递给它的内容覆盖现有文件。

你想要做什么是附加到文件,您可以用fs.appendFile做到:

fs.appendFile('out.html', src, function(err) { 
    if (err) { 
    throw err; 
    } 
}); 
相关问题