Первую задачу можно так сделать
var request = require ('request');
var cheerio = require ('cheerio');
const fs = require('fs');
var results = new Array();
var pagesCount = 47;
let prm = Promise.resolve();
for (let i = 0; i < pagesCount; i++){
var URL = 'здесь ссылка плюс ид страницы='+i;
prm = prm.then ( _ => new Promise (res => {
request(URL, function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
$('tr:not(.spacer)').each(function(i, element){
// Тут происходит много строчек кода селекторов и записи в объект data.
console.log(data);
results.push(data);
});
res();
}
});
})
)
}
// В конце мне все это нужно сохранить в JSON, То есть записать массив result
prm.then (_=> {
console.log('saving...');
fs.writeFileSync("data.json", JSON.stringify(results,null,4));
})