在Node.js/Express中,如何"下载"页面并获取其HTML?

TIM*_*MEX 20 javascript http node.js

在代码中,我想下载"http://www.google.com"并将其存储在字符串中.我知道如何在python中的urllib中这样做.但是你如何在Node.JS + Express中做到这一点?

yoj*_*o87 26

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();
Run Code Online (Sandbox Code Playgroud)


Dve*_*Dve 19

使用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);
});
Run Code Online (Sandbox Code Playgroud)

(来自node.js文档的示例)

您也可以使用mikeal的请求模块

https://github.com/mikeal/request

  • 你需要声明`http = require("http")` (3认同)

Nat*_*hat 14

简单简短高效的代码:)

var request = require("request");

request(
    { uri: "http://www.sitepoint.com" },
    function(error, response, body) {
        console.log(body);
    }
);
Run Code Online (Sandbox Code Playgroud)

doc链接:https : //github.com/request/request

  • 以下是[请求的替代库](https://github.com/request/request/issues/3143) 的列表。 (2认同)