我使用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;
答案 0 :(得分:3)
看起来你正在给它一个POJO(普通的旧JavaScript对象),但要将它写入文件,你需要将它转换为pow2
的字符串。
进行更改的最简单的地方就像在追加功能中一样:
JSON.stringify()