使用Express获取Node.js中的URL内容

时间:2011-10-14 19:27:45

标签: node.js express

使用Express框架时,如何在Node中下载URL的内容?基本上,我需要完成Facebook身份验证流程,但如果不获取OAuth令牌URL,我就无法做到这一点。

通常,在PHP中,我使用Curl,但Node是等价的?

4 个答案:

答案 0 :(得分:25)

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);
});

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

答案 1 :(得分:9)

您将面临的问题是:某些网页使用JavaScript加载其内容。因此,您需要一个软件包,如模拟浏览器行为的After-Load,然后为您提供该URL的HTML内容。

var afterLoad = require('after-load');
afterLoad('https://google.com', function(html){
   console.log(html);
});

答案 2 :(得分:2)

使用http方式仅需要一个简单的html页面就需要更多的代码行。

  

这是一种有效的方法:使用请求

var request = require("request");

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

以下是请求文档:https://github.com/request/request



使用带有承诺的提取的第二种方法:

    fetch('https://sitepoint.com')
    .then(resp=> resp.text()).then(body => console.log(body)) ; 

答案 3 :(得分:0)

使用 http 模块:

const http = require('http');

http.get('http://localhost/', (res) => {
    let rawHtml = '';
    res.on('data', (chunk) => { rawHtml += chunk; });
    res.on('end', () => {
        try {
            console.log(rawHtml);
        } catch (e) {
            console.error(e.message);
        }
    });
});

rawHtml - 页面的完整 html。

我只是简化了 example from official docs