我正在尝试使用restler获取网站的HTML。但是当我试图得到结果的相关部分时,我总是得到错误,
“TypeError:无法读取未定义的属性'rawEncoded'”。
'rawEncoded'有时候是'res'。我认为它会根据处理时间而改变。
我正在尝试从restler获取result.request.res.rawEncode获取结果。
我的功能:
var rest = require('restler');
var loadHtmlUrl = function(weburl) {
var resultstr = rest.get(weburl).on('complete', function(result) {
var string = result.request.res.rawEncode;
return string;
});
return resultstr;
};
然后:
var htmlstring = loadHtmlUrl('http://google.com');
也许restler是完全错误的方式。也许我完全不了解它。但我肯定被卡住了......
谢谢!
答案 0 :(得分:3)
在调用return resultstr;
回调之前,on('complete'
是否会运行,因为它是异步的,因此导致htmlstring
为空?我认为您需要将回调作为loadHtmlUrl
的参数,如下所示:
var rest = require('restler');
var loadHtmlUrl = function(weburl, callback) {
var resultstr = rest.get(weburl).on('complete', function(result) {
callback(result.request.res.rawEncode);
});
};
然后这样称呼它:
var htmlstring = null;
loadHtmlUrl('http://google.com', function(rawEncode) {
htmlstring = rawEncode;
//Do your stuff here...
});
我认为这将解决您将遇到的未来问题。但是,我认为你面临的真正问题是result.request没有res
的属性。我认为我上面的改变可以解决这个问题(不太确定如何)。如果没有,那么我建议查看result.request
作为调试启动器的属性...