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();
});
我已經改變了getHome()getAll()仍然沒有出現。謝謝! – user3817427
您是否嘗試過在'scores.js'中返回'_response'並使用'res.json(scores.getAll());'?看起來在解析json時存在一些問題。 – paradite
我終於修好了。我所做的更改是從「var jsonResponse = JSON.stringify(_response);」中刪除「var」並使用「res.json(scores.getAll());」。謝謝你的幫助! – user3817427