使用Express框架时,如何在Node中下载URL的内容?基本上,我需要完成Facebook身份验证流程,但如果不获取OAuth令牌URL,我就无法做到这一点。
通常,在PHP中,我使用Curl,但Node是等价的?
答案 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);
});
答案 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。