我有一个应用程序从网站上刮擦并显示在我的网站上。它在本地工作正常,但在heroku上,它不起作用。我想知道它是否可能与我的控制器/路由文件中定义的全局数组有关。我正在使用'请求'和'cheerio'来刮擦。一旦我获得了数据,我将对象存储到我的空全局数组中,然后重定向回我的主页,在那里我创建另一个对象来保存被抓取的文章数组,然后将其显示在我的把手上。
var scrapeResults = [];
router.get('/', function(req, res){
res.redirect('/home');
});
router.get('/home', function(req, res){
if(scrapeResults.length > 0){
var stuff = {
moreStuff: scrapeResults,
arrLength: scrapeResults.length,
finishScrape: true
}
res.render('home', stuff)
}else{
res.render('home');
}
});
router.get('/scrape', function(req, response){
request('http://www.gamespot.com/', function(err, res, html){
var $ = cheerio.load(html);
var articleCounter = 1;
$('article a').each(function(i, element){
var articleID = articleCounter;
var title = $(this).attr('data-event-title');
var link = $(this).attr('href');
var img = $(this).children('figure').children('div.media-img').children('img').attr('src');
var description = $(this).children('div.media-body').children('p.media-deck').text();
scrapeResults.push({
articleID: articleID,
title: title,
link: link,
img: img,
description: description
});
articleCounter++;
});
response.redirect('/home')
});
});