2016-06-08 42 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; 
    } 
}); 
相關問題