我正在使用spookyjs构建一个web scraper: https://github.com/WaterfallEngineering/SpookyJS
我创建了一个新的幽灵对象,我试图评估一个函数,返回某个html标签的内容。为了可读性,我每次都尝试使用函数(returnDataFromSelector())来执行此操作。然而,当我通过evaluate传递函数时,它返回null。
当我使用匿名函数时,它可以正常工作。我怎样才能得到returnDataFromSelector函数正确工作?
spooky.then(function() {
function returnDataFromSelector(selector) {
return function () {
return document.querySelectorAll(selector)[0].innerHTML;
}
}
var pageData = {};
pageData.projectName = this.evaluate(returnDataFromSelector('a.green-dark')); // returns null
pageData.projectName = this.evaluate(function () { return document.querySelectorAll('a.green-dark')[0].innerHTML;}); // returns correct string
this.emit('pageData', pageData);
});
selector
变量不在正确的上下文中。您应该将选择器单独传递给spooky.evaluate
:
spooky.then(function() {
function returnDataFromSelector(selector) {
return document.querySelectorAll(selector)[0].innerHTML;
}
var pageData = {};
pageData.projectName = this.evaluate(returnDataFromSelector, 'a.green-dark');
pageData.projectName = this.evaluate(function () {
return document.querySelectorAll('a.green-dark')[0].innerHTML;
});
this.emit('pageData', pageData);
});