Nodejs抓取请求模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs抓取请求模块相关的知识,希望对你有一定的参考价值。

我想从网络上获取html。但是它显示出来就是这样。

meta 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);
});
答案

网站阻止了来自程序脚本的请求,该脚本检查了请求标头中的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);
});
另一答案

我不推荐request模块,因为它不再维护更改。在这里看到-https://github.com/request/request/issues/3142

您可以寻找gotaxios等形式的替代方案,这些替代方案使代码更易读和清晰。上面的代码看起来像

var got = require('got');

const url = "https://www.skku.edu/skku/index.do";

(async () => {
  const response = await got(url);
  console.log(response.body);
})();

以上是关于Nodejs抓取请求模块的主要内容,如果未能解决你的问题,请参考以下文章

nodejs实现最简单的爬虫

如何用nodejs开发爬虫程序?

简单实现nodejs爬虫工具

如何使用nodejs做爬虫程序

如何使用nodejs做爬虫程序

nodejs常用代码片段