我正在尝试创建一个简单的nodeJS网络爬行器,但我不知道如何将结果格式化为Json文件。
我用的是express、request、cheerio和fs。
这是我的代码:
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var url = 'http://www.footmercato.net/';
request(url, function(err, resp, body) {
if (!err) {
var $ = cheerio.load(body);
var json = { title : "", article : "", date : "" };
var article = $('.text p');
var articleTxt = article.text();
json.article = articleTxt;
}
JSON.stringify(json);
})
app.listen('8080');
当我启动这个程序时,什么也没有发生,它在JSON.stringify(json);
之前就可以工作了
有人知道怎么修吗?
发布于 2017-01-11 11:59:46
您需要将stringify函数放在回调中,然后将字符串写入文件。如果函数在回调之外,则尚未创建要转换的javascript对象
另外,javascript对象也不是JSON。我已经更改了下面的定义。
request(url, function(err, resp, body) {
if (!err) {
var $ = cheerio.load(body);
var jsObject = { title : "", article : "", date : "" };
var article = $('.text p');
var articleTxt = article.text();
jsObject.article = articleTxt;
var json = JSON.stringify(jsObject);
fs.writeFileSync('path/to/file', json);
}
https://stackoverflow.com/questions/41589238
复制