【发布时间】:2016-08-06 03:16:52
【问题描述】:
这个问题是关于 node.js 中的爬虫的。
一个start_url 在他爬取URL 的地方给出,并将它们“推送”到一个.json-文件(output.json)。
目前,他只用start_url运行请求函数,并将收集到的URL保存在output.json中。我希望他通过将 start_url 替换为第一个收集的 URL 并再次收集链接来使用保存的 URL……等等……
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]);
}
【问题讨论】:
-
我不明白您想如何更改您提供的代码:它似乎已经按照您的要求工作:它将所有找到的链接排队并调用函数 (
req())网址... -
@MarcoS:现在,他使用 start_url 只运行一次请求函数,创建 .json 文件并停止。
-
... 并要求您要求 ...
-
@MarcoS:他还使用从
start_url抓取的找到的 URL 运行请求函数(有点没完没了)。 -
你想用找到的网址做什么?例如,保存它们的内容?
标签: javascript jquery arrays json node.js