Показать сообщение отдельно
  #10 (permalink)  
Старый 20.07.2018, 20:14
Новичок на форуме
Отправить личное сообщение для Floky Посмотреть профиль Найти все сообщения от Floky
 
Регистрация: 19.07.2018
Сообщений: 8

var request = require('request');
var cheerio = require('cheerio'); 




var URL = new Array(
"https://Страница1", 
"https://Страница2",
"https:Страница3");



var request = require('request');
var cheerio = require('cheerio');
var tress = require('tress');
var fs = require('fs');
var Json2csvParser = require('json2csv').Parser;
var needle = require('needle');

var results = [];
var urls = [];

fs.truncate('one.csv', 0, function(){console.log('done')});





var q;
q = tress(function(URL, callback){

needle.get(URL, function (err, res, body) {
		if (err) throw err;
		var $ = cheerio.load(res.body);
		
			//TODO считал количество урлов автоматом по селектору
			//var listLength = $('.user-preview_name').length;
			//var link;
			
			for (i = 0; i <=80; i++) {
					results.push({
				 		Name: $('.user-preview_name').eq( i ).text().trim(),
						City: $('.user-preview_city').eq( i ).text().trim(),
						Spezialinost: $('.user-preview_specialization').eq( i ).text().trim(),
		
						
					 });
				 	//console.log(urls[i]);
				}

		console.log(res.statusCode);
		callback();
		 });
});


q.push(URL, function(){
		console.log("watch: push ");
	});

q.drain = function(){
	console.log("success ");

		//Данные которые спарсил раскладываю по следующим столбцам
		const fields = [ 'Name', 'City', 'Spezialinost','date', 'urlp'];
		const opts = { fields , delimiter: ';'};

		try {
			// Из json данные складываются в csv файл
		  const parser = new Json2csvParser(opts);
		  const csv = parser.parse(results);

		  fs.appendFileSync('one.csv', '\ufeff'+ csv , {encoding: 'utf8'});

		} catch (err) {
		console.error(err);
		}
}



Вопрос сам код выполняет действия с одной страницой, потом с другой затирая последующие результаты в CSV (((

Как решить этот вопрос ?
Ответить с цитированием