从其他站点刮取数据并将其用作Web服务

时间:2014-07-08 17:29:01

标签: javascript json node.js express

我正在尝试制作一个从网站上删除数据的网络服务,但我制作的网站服务并没有显示在我的浏览器上。我正在使用带有Express框架的Nodej。

我的得分.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();
});

1 个答案:

答案 0 :(得分:0)

你有这一行:

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

server.js中。但是,scores.js没有相应的方法getAll()