我正在使用Node.js设置网络抓取工具,并希望从网址中获取一些html并将其另存为变量。随后是一个精简版。
var request = require('request');
var get_html = function(){
var url = "http://www.google.com";
var html = '';
request.get(url,function(error, response, body){
html += body;
});
return html;
};
console.log(get_html());
似乎函数在请求之前返回可以将html连接到变量html
。据我所知,请求只允许我操纵回调函数中的html或将其传递给文件。无论如何只是将它作为变量返回?
答案 0 :(得分:1)
request.get是异步的,它将在回调函数中返回结果。
你需要像这样调整你的代码
var request = require('request');
// get_html receive callback to process result
var get_html = function(callback) {
var url = "http://www.google.com";
var html = '';
request.get(url,function(error, response, body){
return callback(body); // call callback and parse result to it
});
};
// call get_html function
// and log html result here
get_html(function (body) { console.log(body); });
具有大量函数回调的代码看起来并不美观。 我更喜欢承诺而不是回调。 如果您希望使用promise,请尝试'request-promise'lib。
答案 1 :(得分:0)
request.get
似乎是异步的,因此您必须将return html;
放入回调中。否则它会在request.get完成运行之前立即返回。