我想从网络上获取html。但是它显示出来就是这样。
元http-equiv =刷新内容=“ 0; url = http://www.skku.edu/errSkkuPage.jsp”>
但是当我使用https://www.naver.com/代替https://www.skku.edu/skku/index.do时,效果很好。
我想知道原因。
这是我的代码。
var request = require('request');
const url = "https://www.skku.edu/skku/index.do";
request(url, function(error, response, body){
if (error) throw error;
console.log(body);
});
答案 0 :(得分:1)
网站阻止了来自程序脚本的请求,该脚本检查了请求标头中的User-Agent。 传递网络浏览器(例如Google chrome)发送的用户代理,它应该可以工作。
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://www.skku.edu/skku/index.do',
'headers': {
'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
答案 1 :(得分:0)
我不建议使用request
模块,因为它不再维护更改。在这里看到它-https://github.com/request/request/issues/3142
您可以寻找got
,axios
等形式的替代方法,这些替代方法使代码更易读和清楚。最重要的是-对promise和async / await的本机支持上面的代码看起来像
var got = require('got');
const url = "https://www.skku.edu/skku/index.do";
(async () => {
const response = await got(url);
console.log(response.body);
})();