当使用node.js尝试获取以下网页的html内容时:
eternagame.wikia.com/wiki/eterna_dictionary
我得到以下错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
我确实已经在stackoverflow上查到了这个错误,并且意识到这是因为Node.js无法从DNS中找到服务器(我认为)。但是,我不确定为什么会这样,因为我的代码在www.google.com
上运行得很好。
这里是我的代码(实际上是从一个非常相似的问题中复制和粘贴的,只是改变了主机):
var http = require("http");
var options = {
host: 'eternagame.wikia.com/wiki/EteRNA_Dictionary'
};
http.get(options, function (http_res) {
// initialize the container for our data
var data = "";
// this event fires many times, each time collecting another piece of the response
http_res.on("data", function (chunk) {
// append this chunk to our growing `data` var
data += chunk;
});
// this event fires *one* time, after all the `data` events/chunks have been gathered
http_res.on("end", function () {
// you can use res.send instead of console.log to output via express
console.log(data);
});
});
这里是我复制和粘贴的来源:如何在ExpressJS中进行web服务调用?
我没有使用任何带有node.js的模块。
多谢阅读。
在node.jshttp
模块的文档中:http://nodejs.org/api/http.html#http_http_request_options_callback
您可以调用http.get('http://eternagame.wikia.com/wiki/eterna_dictionary',callback)
,然后使用URL.parse()
解析URL;或者调用http.get(options,callback)
,其中options
是
{
host: 'eternagame.wikia.com',
port: 8080,
path: '/wiki/EteRNA_Dictionary'
}
更新
正如@enchanterio的评论所述,端口
字段也是一个单独的选项;并且协议http://
不应包含在主机
字段中。其他答案还建议如果需要SSL,则使用https
模块。