2011-04-27 33 views
14

在代码中,我想下载“http://www.google.com”并将其存储在字符串中。 我知道如何在python中的urllib中做到这一点。但是,您如何在Node.JS + Express中执行此操作?在Node.js/Express中,如何“下载”页面并获取其HTML?

+0

有没有简单的方法来做到这一点?我希望有一套很好的“工具”,我可以作为一个模块下载... – TIMEX 2011-04-27 08:50:52

+0

你能解释一下“代码内部”的含义吗? – 2012-10-11 20:18:56

回答

14

如何使用Node.js,你可以只使用http.request方法

http://nodejs.org/docs/v0.4.7/api/all.html#http.request

这种方法被内置到你只需要为需要HTTP节点。

如果你只想做一个GET,那么你可以使用http.get

http://nodejs.org/docs/v0.4.7/api/all.html#http.get

var options = { 
    host: 'www.google.com', 
    port: 80, 
    path: '/index.html' 
}; 

http.get(options, function(res) { 
    console.log("Got response: " + res.statusCode); 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 

(node.js的从实例文档)

你也可以使用mikeal的要求模块

https://github.com/mikeal/request

+1

请求模块效果最好。我尝试了两种方法,并且本机http模块挂在多个/并发请求上。 – reubano 2013-09-24 09:23:52

+0

这是真的,直到你必须使用重定向,可选的基本授权等'npm install download'的效果最好。 – 2014-09-08 17:28:21

19
var util = require("util"), 
    http = require("http"); 

var options = { 
    host: "www.google.com", 
    port: 80, 
    path: "/" 
}; 

var content = ""; 

var req = http.request(options, function(res) { 
    res.setEncoding("utf8"); 
    res.on("data", function (chunk) { 
     content += chunk; 
    }); 

    res.on("end", function() { 
     util.log(content); 
    }); 
}); 

req.end(); 
相关问题