如何在node.js中发出https请求

时间:2015-01-18 08:34:57

标签: javascript node.js https

我需要制作一个抓取工具。对于我曾经这样做的http请求。

 var http=require('http');
 var options={
   host:'http://www.example.com',
   path:'/foo/example'
 };

 callback=function(response){
 var str='';
 response.on('data',function(chunk){
 str+=chunk;
 });
 response.on('end', function () {
       console.log(str);
 });
 }
 http.request(options, callback).end();

但我必须为https://example.com/foo/example制作一个抓取工具 如果我对https://example.com/foo/example使用相同的内容,则会出现此错误

 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)

1 个答案:

答案 0 :(得分:3)

我建议使用这个优秀的HTTP请求模块:http://unirest.io/nodejs.html

您可以使用以下方式安装:

  

npm install -g unirest

以下是Unirest的一些示例节点代码:

  var url = 'https://somewhere.com/';
  unirest.get(url)
    .end(function(response) {
      var body = response.body;
      // TODO: parse the body
      done();
    });

...所以要在www.purple.com上获取HTML,你可以这样做:

#!/usr/bin/env node

function getHTML(url, next) {
  var unirest = require('unirest');
  unirest.get(url)
    .end(function(response) {
      var body = response.body;
      if (next) next(body);
    });
}

getHTML('http://purple.com/', function(html) {
  console.log(html);
});