Есть такой код он парсит данные с сайта и записывает их в виде массива.
Вопрос : как сохранить массив в csv файл?
const tress = require('tress');
const needle = require("needle");
const cheerio = require("cheerio");
const async = require("async");
const fs = require('fs');
let aUrl = [
'ссылка на товар',
'ссылка на товар',
'ссылка на товар',
];
const jquery = body => cheerio.load(body);
let products = [];
let parsePage = ($) => {
let name = $("#shop-production-view > h1").first().text();
let categories = $(".breadcrumb").text();
let price = $(".price").text();
let content = $('.content_item').html();
let images = $(".image").find("img").attr("src");
// let $imageLink = $(".shop-production-view .image a"),
// img = '';
// if ($imageLink.length > 0) {
// img = $imageLink.attr("href");
// }
products.push({
name,
categories,
content,
price,
images,
// img,
});
};
let q = tress((url, callback) => {
needle.get(url, { }, (err, res) => {
if (err) {
throw err;
}
parsePage(jquery(res.body));
callback();
});
}, 5);
q.drain = () => {
console.log(products);
};
for (let i = 0; i < aUrl.length; i++) {
q.push(aUrl[i]);
}
Испольузйте соответствующую библиотеку, например fast-csv
Примеры из документации:
var ws = fs.createWriteStream("my.csv");
csv
.write([
["a", "b"],
["a1", "b1"],
["a2", "b2"]
], {headers: true})
.pipe(ws);
,
csv
.writeToPath("my.csv", [
["a", "b"],
["a1", "b1"],
["a2", "b2"]
], {headers: true})
.on("finish", function(){
console.log("done!");
});
Больше примеров тут.
Готовый пример сохранения JS-массива в csv-файл:
// исходный массив, который хотим увидеть в csv файле
var data = [
["name 1", 2, 3],
["name 2", 4, 5],
["name 3", 6, 7],
["name 4", 8, 9],
["name 5", 10, 11]
];
// массив строк для csv файла
var lineArray = [];
// пройти по исходному массиву и подготовить массив строк для csv файла
data.forEach(function(infoArray) {
var line = infoArray.join(",");
lineArray.push(line);
});
var csvContent = lineArray.join("\n");
// имя файла и blob - для создания файла csv
var filename = 'test.csv';
var blob = new Blob([csvContent], {
type: 'text/csv;charset=utf-8;' // тип файла
});
// сохранить файл на диск
if (navigator.msSaveBlob) { // для IE 10+
navigator.msSaveBlob(blob, filename);
} else { // для остальных браузеров
var link = document.createElement("a");
if (link.download !== undefined) {
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
Ссылки на источники:
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу понять, почему если через consolelog, то вижу данные, а если через return то ничего не приходит
При копировании текста с Вордовского документа и последующей вставке в html-элемент с contenteditable="true" получаю внутренний стиль вида: