首页 > 解决方案 > 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);
});

标签: htmlnode.jswebweb-scraping

解决方案


该网站阻止来自编程脚本检查请求标头中的用户代理的请求。通过网络浏览器(例如:谷歌浏览器)发送的用户代理,它应该可以工作。

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);
});

推荐阅读