2014-07-08 108 views
0

我正在嘗試製作一個網站服務,用於從網站上抓取數據,但是我所做的並未在我的瀏覽器上顯示。我使用Express框架使用Nodejs。從其他網站上抓取數據並將其用作網絡服務

我的scores.js工作,我可以從它獲得JSON數據,如果我在命令提示符下運行它,但是當我在Express框架下運行它時,我的瀏覽器上沒有顯示任何內容。

這是我使用我的server.js

var express = require('express'); 
var scores = require('./scores'); 

var app = express(); 
var port = process.env.PORT || 80; 
var router = express.Router(); 

router.use(function(req, res, next) { 
    console.log('%s %s', req.method, req.path); 
    next(); 
}); 

router.get('/scores', function(req, res, next) { 
    res.json({result : scores.getAll()}); 
}); 

app.use('/api', router); 
app.listen(port); 
console.log('Server listening on port ' + port); 

代碼,這是我爲代碼scores.js

var cheerio = require('cheerio'); 
var requestify = require('requestify'); 
var rl = require('readline'); 
var prompts = rl.createInterface(process.stdin, process.stdout); 

exports.getAll = function() { 
    var jsonResponse; 

    requestify.get('http://example.com').then(function(response) { 
    var _response = { 
     'results' : [] 
    }; 
    var title, link, runtime; 

    response.getBody(); 
    $ = cheerio.load(response.body); 

    $('.content').each(function() { 
     $(this).find('a, img, span').each(function(i, elem) { 
      if ($(this).is('img')) 
      title = ($(this).attr('alt')); 
      if ($(this).is('a') && $(this).attr('class') != 'preview') 
      link = ($(this).attr('href')); 
      if ($(this).is('span') && $(this).attr('style') == 'float:left;') 
      runtime = ($(this).text().replace('time:', '')) 
     }); 
     _response.results.push({"title" : title, "link" : link, "runtime" : runtime}); 
    }); 

    var jsonResponse = JSON.stringify(_response); 
    }); 

    return jsonResponse; 
} 

prompts.question("Hit Enter to exit...\n", function() { 
    process.exit(); 
}); 

回答

0

你有這樣一行:

res.json({result : scores.getAll()}); 

在你身上r server.js。但是,scores.js沒有相應的方法getAll()

+0

我已經改變了getHome()getAll()仍然沒有出現。謝謝! – user3817427

+0

您是否嘗試過在'scores.js'中返回'_response'並使用'res.json(scores.getAll());'?看起來在解析json時存在一些問題。 – paradite

+0

我終於修好了。我所做的更改是從「var jsonResponse = JSON.stringify(_response);」中刪除「var」並使用「res.json(scores.getAll());」。謝謝你的幫助! – user3817427