這個問題是關於一個履帶在node.js。 A start_url
給出了他抓取URL的地方,並將它們「推送」給了一個。 json -file(output.json
)。 目前,他只使用start_url
運行請求功能,並將收集的URL保存在output.json
中。我想,他通過與第一收集網址替換start_url
使用保存的網址,並再次收集鏈接...等等...iterate node.js請求功能
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var start_url = ["http://stackoverflow.com/"]
var req = function(url){
request(url, function(error, response, html){
var $ = cheerio.load(html);
var data = [];
$("a").each(function() {
var link = $(this);
var exurls = {exurl: new Array(link.attr("href"))}
data.push(exurls);
// Queue "exurls" for "start_url" and call the same function with the new URL (endless loop)
// save to "output.json" from time to time, so you can stop it anytime
});
fs.writeFile("output.json", JSON.stringify(data, null, 4), function(err){
if(err){
console.log(err);
} else {
console.log("File successfully written!");
}
});
});
}
for (var i = 0; i < start_url.length; i++){
req(start_url[i]);
}
我不明白你怎麼想改變你給的代碼:它似乎已經在按你的要求工作:它將所有找到的鏈接排隊,並用找到的URL調用函數('req()')... – MarcoS
@MarcoS:現在,他使用start_url運行請求函數一次,創建.json文件並停止。 –
......並且你要求... – MarcoS