NodeJS HttpGet方法无法在Wiki

时间:2016-07-13 07:57:57

标签: javascript html node.js http http-get

目的

下载Wiki页面的HTML。

背景

我正在尝试下载Wiki页面的HTML(http://warframe.wikia.com/wiki/Mods_2.0)来解析信息。为实现这一目标,我使用的是NodeJS,我使用的是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?,但是这个讨论有一个不同的问题(它主要关注流媒体,这不是我的目标)。

问题

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

2 个答案:

答案 0 :(得分:2)

删除网址中的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();

答案 1 :(得分:1)

只需从主机

中删除http://即可
  

主持人:“warframe.wikia.com”,

在路径之前添加/作为根目录

  

路径:'/ wiki /Mods_2.0'

希望它能够奏效,请参阅上一个问题Link