html - Node.js 使用请求模块进行抓取
问题描述
我想从网上获取 html。但它是这样显示的。
meta http-equiv=refresh content="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);
});
解决方案
该网站阻止来自编程脚本检查请求标头中的用户代理的请求。通过网络浏览器(例如:谷歌浏览器)发送的用户代理,它应该可以工作。
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);
});
推荐阅读
- javascript - 我很难让 Ajax 使用 django 表单发送发布请求
- python - 从本地相对路径而不是 pip 安装模块导入?
- haskell - 以正确的方式在 Haskell 中编写模块
- c# - 如何正确格式化带有密码的 ac# 7-zip 字符串?
- asp.net-core - 接受多个文件上传和附加参数的 REST API 方法
- python - AWS Lambda:如何将 RDS Aurora 查询作为原子事务执行?
- github - shh 密码不允许我上传到 github 页面
- identityserver4 - Blazor Web 程序集和身份服务器 4
- powershell - Powershell 4 中的递归深度
- python - 使用 Pysolr 在新节点上添加副本或移动副本