この質問は、クローラーに関するnode.jsです。 start_url
は、URLをクロールして、URLに「プッシュ」するところに与えられます。 json-ファイル(output.json
)。 現時点では、彼はstart_url
でリクエスト機能を実行し、収集したURLをoutput.json
に保存します。私は何を行うことができますことは、再帰的関数呼び出しを行うことで、彼が最初に収集されたURLにstart_url
を置き換えることによって、保存されたURLを使用して、もう一度リンクを集めることをしたい...というように...iterate node.js request function
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でリクエスト機能を1回だけ実行し、.json-Fileを作成して停止します。 –
...あなたに尋ねると... – MarcoS