【发布时间】:2017-06-02 23:52:26
【问题描述】:
我用cheerio 和request 制作了一个网络爬虫,现在我正在尝试在一个url 数组上实现一个循环。
不幸的是,我的呼叫和回拨有问题,但我不知道是什么。
这是我的代码:
var getWebData = function(url) {
var i = 1;
var data = [];
for (c = 0; c < url.length; c++) {
data[i] = request(url[c], function(err, resp, body) {
console.log('ok');
if (!err) {
console.log('there');
var $ = cheerio.load(body);
$('.text').each(function(i, element) {
var jsObject = { name : "", description : "", price: "", categorie: "", pricePerKg: "", capacity: "", weight: "", scrapingDate : "", url: ""};
var name = 'TESTOK';
jsObject.name = name;
data.push(jsObject);
})
return data;
}
console.log('but');
});
i++;
}
var json = JSON.stringify(data);
fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err) {
console.log('File successfully written!');
})
}
getWebData(url);
app.listen('8080');
请注意,我的任何调试打印都不会打印。
有谁知道我的代码出了什么问题,我该怎么做才能让它工作?
【问题讨论】:
-
"请注意,我的任何调试打印都已打印..." - 打印了什么?此外,
data将在JSON.stringify(data)中未定义,因为您没有考虑异步性。 -
url 是 url @eLRuLL 的 [ ]
-
对不起,我的任何印刷品都没有印刷@DanielB
标签: javascript jquery node.js web-scraping cheerio