Я следовал за кучу учебников о том, как сделать немного веб-соскоб в узле JSNodeJS Ответный
(я не являюсь полным нуб так что любое понимание по вопросу, независимо от того, как основные, помогает)
Я пытаюсь найти способ сохранить «urls» массива в текстовом файле, но столкнулся с несколькими проблемами. Это асинхронно, потому что сбор ссылок занимает много времени, и я не могу понять, как обратные вызовы работают в узле.
Вот что я до сих пор:
var request = require('request');
var cheerio = require('cheerio');
var links = [];
request('http://www.reddit.com', function(err, resp, body){
if(!err && resp.statusCode == 200){
var $ = cheerio.load(body);
$('a.title', '#siteTable').each(function(){
var url = $(this).attr('href');
urls.push(url);
});
console.log(links);
}
});
Я думал просто положить весь этот «раздел» на тайм-аут, который даст ему достаточно времени, чтобы составить список ссылок, но я хотел бы видеть, что более чистый и более правильный способ сделать это.
Может ли кто-нибудь показать мне, как я буду использовать обратный вызов для этого, чтобы я мог настроить функцию печати для сохранения вывода после этого?
http://blog.slaks.net/2014-12-23/parallelism-async-threading-explained/ – SLaks
Вы могли бы написать функцию который берет в ваш массив, а затем сохраняет его в файл. В принципе, замените 'console.log (links)' на 'saveLinks (ссылки)' где 'saveLinks' - это функция, которую вы написали. –
Просто запустите свой код после получения ответа. – SLaks