Node.js выскабливание с помощью модуля запроса - PullRequest
1 голос
/ 09 января 2020

Я хочу получить html из сети. Но это так выглядит * Но когда я использую 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);
});

Ответы [ 2 ]

1 голос
/ 09 января 2020

Сайт блокирует запрос, поступающий из программы c Сценарий проверки User-Agent в заголовке запроса. Передайте 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);
});
0 голосов
/ 09 января 2020

Я бы не рекомендовал request модуль, так как он больше не поддерживается для изменений. смотрите здесь - https://github.com/request/request/issues/3142

Вы можете искать альтернативы в форме got, axios et c, что делает код намного более читабельным и понятным. И самое главное - встроенная поддержка обещаний и 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);
})();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...