2017-01-11 29 views
1

我想做一個簡單的nodeJS webscraper,我無法弄清楚如何在Json文件中格式化我的結果。WebScraper和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'); 

當我啓動這個程序沒有什麼happend,這是以前工作JSON.stringify(json);

有誰知道如何解決它?

回答

0

您需要將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); 

} 
+0

非常感謝Peter的回答。當我運行程序時,我有這個錯誤,你知道我要做什麼嗎?返回binding.writeString(fd,buffer,offset,length,position); ^ 類型錯誤:第一個參數必須在類型錯誤(天然) 是文件描述符 在Object.fs.writeSync(fs.js:792:18) 在Request._callback(C:\ Users \用戶利昂娜\桌面\ school_projects \ Scraper \ server.js:16:9) at Request.self.callback –

+0

@MalkovitchJohn對不起,我寫的fs.writeFileSync,更新代碼 –

+0

感謝彼得,我已經改變了fs.writeFile('輸出.json',JSON.stringify(json,null,4),function(err){console.log('File Successful written! - 檢查你的項目目錄中的output.json文件'); })現在它是加工。 –