有以下脚本( one-request.js )
#!/usr/bin/env node
var request = require('request');
const cheerio = require('cheerio');
var options = {
url: 'https://www.accuweather.com/en/us/anchorage-ak/99501/daily-weather-forecast/346835?day=1', // Anchorage
headers: {
'User-Agent':'Web/2.0',
'Connection':'keep-alive'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
var title = $('div#header-logo > a:first-child > span').text();
console.log('title:',title); // title: Anchorage Daily Weather
}
}
request(options, callback);
它在家用计算机上运行(节点one-request.js )并收到成功的响应。
但是,在Heroku( heroku运行one-request.js )中执行脚本时,没有答案。如果在请求中删除了标头,则在家用计算机上运行脚本时会获得相同的效果。因此,我认为问题在于Heroku中的头文件的形成(也测试了'User-Agent': 'Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 59.0) Gecko / 20100101 Firefox / 59.0.
版本的相同效果)。
如果请求的地址不需要标题(对于其他网站),则脚本的结果对于home和Heroku都同样成功。
如何在 Heroku 中提出请求?