Проблемы с записью данных в CSV-файл - PullRequest
0 голосов
/ 10 апреля 2019

Я написал скрипт в node, использующий puppeteer для получения различных names и links их профилей с веб-страницы. Скрипт выбирает их правильно.

Теперь я хочу записать данные в CSV-файл, но не могу понять, как это сделать. Я сталкивался со многими статьями, в которых рассказывается о написании того же самого, но большинство из них либо неполные, либо используют такие библиотеки, которые больше не поддерживаются.

Это то, что я написал до сих пор:

const puppeteer = require('puppeteer');
const link = "https://www.ak-brandenburg.de/bauherren/architekten_architektinnen";

(async ()=> {
  const browser = await puppeteer.launch()
  const [page] = await browser.pages()
  await page.goto(link)

  const listItem = await page.evaluate(() =>
    [...document.querySelectorAll('.views-table tr')].map(item => ({
      name: item.querySelector('.views-field-title a').innerText.trim(),
      profilelink: "https://www.ak-brandenburg.de" + item.querySelector('.views-field-title a').getAttribute("href"),
    }))
  );
  console.log(listItem);

  await browser.close();
})();

Как записать данные в CSV-файл?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Существует гораздо более простой способ добиться того же.Если вы извлечете эту библиотеку , вы сможете очень легко записать данные в CSV-файл.

Рабочий скрипт:

const fs = require('fs');
const Json2csv = require('json2csv').Parser;
const puppeteer = require('puppeteer');
const link = "https://www.ak-brandenburg.de/bauherren/architekten_architektinnen";

(async ()=> {
  const browser = await puppeteer.launch()
  const [page] = await browser.pages()
  await page.goto(link)

  const listItem = await page.evaluate(() =>
    [...document.querySelectorAll('.views-table tbody tr')].map(item => ({
      name: item.querySelector('.views-field-title a').innerText.trim(),
      profilelink: "https://www.ak-brandenburg.de" + item.querySelector('.views-field-title a').getAttribute("href"),
    }))
  );
  const j2csv = new Json2csv(['name','profilelink']);
  const csv = j2csv.parse(listItem);
  fs.writeFileSync('./output.csv',csv,'utf-8')

  await browser.close();
})();
0 голосов
/ 10 апреля 2019

Я не работал с кукловодом, но я создал CSV-файл в моем проекте узла

Храните ваши данные в массиве, например: csvData

Затем используйте fs.writeFile для сохранения данных в формате csv.

`fs.writeFile(`path/to/csv/${csvName}.csv`, csvData, 'utf8', function(err) {
 if (err) {
    console.log('error', err)
  }
  res.send({
    url: `path/to/csv/${csvName}.csv`
  })
})`

используйте только res.send, если вы хотите отправить файл csv с сервера на клиент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...