首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Osmosis函数内部将json对象写入csv

从Osmosis函数内部将json对象写入csv
EN

Stack Overflow用户
提问于 2019-04-16 21:17:47
回答 1查看 275关注 0票数 1

我正在使用node.js工具Osmosis将一串数据提取为json对象的数组

Osmosis函数的本质似乎是数组只存在于函数的作用域中,因此在函数停止运行并处理json文件之前,我还需要在函数中写入文件。

下面是我提取数据的代码:

代码语言:javascript
复制
    'use strict';
const osmosis = require('osmosis');
const fs = require('fs');
const converter = require('json2csv');
var stringify = require('csv-stringify');

function getOpenGraphMeta() {
  return new Promise((resolve, reject) => {
    let response;

    osmosis 

    .get('https://www.winepeople.com.au/wines/Dry-Red/_/N-1z13zte')
    .find('.product-row.product-bottle')
    .set({
      title: "h2.wine-title",
      headline: "h3.wine-headline",
      text: "p.wine-text"
    })
    .data(res => response = res)
    .error(err => reject(err))
    .done(() => resolve(response));
  });
}

getOpenGraphMeta().then(res => {
  console.log(res);
});


function getHomePageTrending() {
  return new Promise((resolve, reject) => {
  let response = [];   
  let stringToReplaceComas = '!!!!';

    osmosis 

      .get('https://www.winepeople.com.au/wines/Dry-Red/_/N-1z13zte')
      .paginate('#search > div.content.col-xs-12.col-md-9.wine-search-results.search-page > div:nth-child(7) > div > nav > ul > li:nth-child(5) > a', 2)
      .find('.product-row.product-bottle')
      .set({
        title: 'h2.wine-title',
        headline: 'h3.wine-headline',
        text: 'p.wine-text',
        RRP: 'label.product-list-price',
        VPP: 'h2.vpp-price',
        TwelveBottle: 'label.product-price',
        SixBottle: '#js-search-price > div:nth-child(2) > label > b',
      })
      .find('.row.wine-attributes')
      .set({
        Country: '//*[@id="search"]/div[2]/div[6]/div[3]/div/div/div[2]/div[2]/div[1]/text()'
      })
      .data(res => response.push(res))
      .error(err => reject(err))
      .done(() => resolve(response));


  });
}

getHomePageTrending().then(res => {
  console.log(res);
});

然后如何将json对象的result[]数组写入磁盘上的csv?或者甚至只是一个json文件,然后我可以用CLT进行转换?任何将json数组写入磁盘的方法都可以满足需要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 22:54:16

我不认为你的工作需要csv-stringify

代码语言:javascript
复制
getOpenGraphMeta().then(res => {
  var jsonstrMinified = JSON.stringify(res); //unformatted
  var jsonstr = JSON.stringify(res, null, 2);  //formatted
  fs.writeFileSync('/path/to/file-on-fisk.json', jsonstr)

  var fields = ['title', 'headline', 'text'];
  var parser = new converter.Parser({ fields });
  var csvstr = parser.parse(res);
  fs.writeFileSync('/path/to/file-on-fisk.csv', csvstr));
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55709141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档