Я создал webscraper с cheerio
и request
, и теперь я пытаюсь реализовать цикл на массиве url.Функция и цикл обратных вызовов Javascript/NodeJS
К сожалению, я делаю что-то неправильно с моими вызовами и обратным вызовом, но я не могу понять, что.
Это мой код:
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');
Примечание, чем любой из моих отлаживает печати не печатаются.
Кто-нибудь знает, что не так в моем коде и как я могу это сделать, чтобы заставить его работать?
- это 'url' список? – eLRuLL
«Обратите внимание, что любая печать моего отладки напечатана ...» - Что напечатано? Кроме того, 'data' будет неопределенным в' JSON.stringify (data) ', потому что вы не учитываете асинхронность. –
url является [] url @eLRuLL – rastafalow