NodeJS Web Scraping多个站点,promises输出到json文件

时间:2018-01-29 17:51:18

标签: javascript json node.js

我使用nodejs刮取多个粉丝网站作为我自己的练习练习。我能够获得我需要和想要的数据,但是我在将这些数据写入我的json文件时遇到了问题,因为我得到了[content content]而不是我想要的标题。

上一个问题:NodeJS multi site web scrape

这是我目前的源代码:

var express = require('express');
var cheerio = require('cheerio');
var app = express();
var rp = require('request-promise');
var fsp = require('fs-promise');

app.get('/', function(req, res){

  url = 'http://fansite1.com/character1';
  url1 = 'http://fansite1.com/character2';


  function parse(html) {
    var title;
    var json = { title: "" };
    var $ = cheerio.load(html);
    $('.page-header__title').filter(function () {
      var data = $(this);
      title = data.text();
      json.title = title;
      console.log(json.title);
    })
    return json;
  }
  var append = file => content => fsp.appendFile(file, content);
  rp(url)
  .then(parse)
  .then(append('output.json'))
  .then(() => console.log('Success'))
  .then(res.send('Check your console!'))  
  .catch(err => console.log('Error:', err));

  rp(url1)
  .then(parse)
  .then(append('output.json'))
  .then(() => console.log('Success'))
  .then(res.send('Check your console again!'))  
  .catch(err => console.log('Error:', err));
})

app.listen('8081')
console.log('Running on port 8081');
exports = module.exports = app;

1 个答案:

答案 0 :(得分:3)

看起来你正在给它一个POJO(普通的旧JavaScript对象),但要将它写入文件,你需要将它转换为pow2的字符串。

进行更改的最简单的地方就像在追加功能中一样:

JSON.stringify()