2017-01-11 3 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'); 

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

回答ありがとうございました。私はこのエラーがあるプログラムを実行すると、私は何をしなければならないのか分かりますか?戻り値binding.writeString(fd、バッファ、オフセット、長さ、位置); ^ はTypeError:Request._callback(Cで (18:792 fs.js):最初の引数はObject.fs.writeSyncではTypeError(ネイティブ) でファイルディスクリプタ でなければなりません\ 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('ファイルが正常に書き込まれました - プロジェクトディレクトリにoutput.jsonファイルがあります '); }}これでワーキング。 –

関連する問題