Node.js スクリプトを使用して、StackOverflow からデータを収集しています。すべての応答が gzip されていることはわかっているので、それを処理するコードを入れます。私のスクリプトは次のとおりです。
var request = require('request');
var zlib = require('zlib');
function getStackOverflowResponse(url, callback){
request(url, {encoding: null}, function(err, response, body){
if(response.headers['content-encoding'] == 'gzip'){
zlib.gunzip(body, function(err, dezipped) {
callback(dezipped);
});
} else {
callback(body);
}
});
}
var url = "https://api.stackexchange.com/docs/questions#pagesize=2&order=desc&min=2014-01-04&max=2014-02-02&sort=activity&tagged=apigee&filter=default&site=stackoverflow&run=true";
getStackOverflowResponse(url, function(questions) {
console.log(questions);
});
JSON 出力を取得する代わりに、次の応答を取得しています。
Buffer 0d 0a 0d 0a 0d 0a 0d 0a 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 3e 0d 0a 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 3e 0d 0a 3c 68 65 61 64 3e 20 0d ...
応答は、ここに表示されるように削除した左山括弧と右山括弧で囲まれています。
callback(dezipped);
私が試した代わりcallback(JSON.parse(dezipped));
にcallback(JSON.parse(dezipped.toString()));
私には何も機能していないようです。私が何をしても、バッファの結果はまだ得られます。この作業を行う方法についての助けをいただければ幸いです。