NodeJS HttpGet 方法不适用于 Wiki

NodeJS HttpGet method not working on Wiki

Objective

下载维基页面的 HTML。

背景

我正在尝试下载 Wiki 页面的 HTML (http://warframe.wikia.com/wiki/Mods_2.0) to parse for information. To achieve this I am using NodeJS and I am using its HTTP Request methods.

代码

我有一个非常简单的代码文件,它只访问网站并尝试打印其内容:

"use strict";

var http = require("http");

var options = {
  host: "http://warframe.wikia.com",
  port: 80,
  path: 'wiki/Mods_2.0',
  method: "GET"
};

var req = http.request(options, function(res) {

  console.log("STATUS: " + res.statusCode);
  console.log("HEADERS: " + JSON.stringify(res.headers));
  res.setEncoding('utf8');

  res.on("data", function (chunk) {
    console.log("BODY: " + chunk);
  });
});

req.end();

问题

问题是无论我做什么,也不管我尝试什么,我总是得到以下错误输出:

Debugger listening on port 15454 events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND http://warframe.wikia.com http://warframe.wikia.com:80
    at errnoException (dns.js:27:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26)


Process exited with code: 1

我很确定我构建的 URL 不正确,但不知何故我无法理解如何解决这个问题!

我试过的

我的方法是基于本次讨论的内容In Node.js / Express, how do I "download" a page and gets its HTML?

我尝试了 options 变量中 URL 路径的几种组合,只是得到了相同错误的不同版本。

我也读过 In Node.js / Express, how do I "download" a page and gets its HTML?,但是那个讨论有一个不同的问题(它关注流媒体,这不是我的 objective)。

问题

1 - 我相当确定这是一个简单的错误,但我看不到它。我错过了什么?

删除url中的http并在路径中添加/

"use strict";

var http = require("http");

var options = {
  host: "warframe.wikia.com",
  port: 80,
  path: '/wiki/Mods_2.0',
  method: "GET"
};

var req = http.request(options, function(res) {

  console.log("STATUS: " + res.statusCode);
  console.log("HEADERS: " + JSON.stringify(res.headers));
  //res.setEncoding('utf8');

  res.on("data", function (chunk) {
    console.log("BODY: " + chunk);
  });
});

req.end();

只需从主机中删除 http://

host: "warframe.wikia.com",

并在路径前加一个/作为根目录

path: '/wiki/Mods_2.0'

希望它会起作用,在上一个问题中看到它Link