噩梦没有从评估中返回正确的值
Nightmare not returning correct value from evaluate
我在 javascript 中使用 Nightmare 来创建网络抓取工具,但评估函数 return 获取的信息不正确。它似乎能够 returning 基本类型(整数、字符串等),但不能 "querySelectorAll" 中的元素列表。以下代码工作正常:
var Nightmare = require('nightmare'); // make a new nightmare
var nightmare = Nightmare({ show: true }); // display it (change to false for text only)
nightmare
.goto('http://whosebug.com/questions') // go to stack overflow
.evaluate(function () {
var all_options = document.querySelectorAll(".summarycount");
return all_options[0].innerHTML;
})
// .end()
.then(function (result) {
console.log(result);
})
.catch(function (error) {
console.error('Search failed:', error);
});
并打印出“13,844,183”或任何当前问的问题数。但是,当我尝试 return 评估函数中的所有选项时,更改评估然后函数如下所示:
.evaluate(function () {
var all_options = document.querySelectorAll(".summarycount");
return all_options;
})
// .end()
.then(function (result) {
console.log(result[0].innerHTML);
})
它只是打印未定义。因此,由评估函数计算的 return 值不是所有匹配 DOM 元素的正确列表。有没有办法解决?理想情况下,脚本将能够从列表中找到多个元素,选择每个元素,然后在页面上 运行 更多代码(可能涉及选择更多选项),然后评估结果。
问题是求值必须 return 原始类型。我通过处理评估函数中数据的所有点击和处理来解决了我的部分问题。
我在 javascript 中使用 Nightmare 来创建网络抓取工具,但评估函数 return 获取的信息不正确。它似乎能够 returning 基本类型(整数、字符串等),但不能 "querySelectorAll" 中的元素列表。以下代码工作正常:
var Nightmare = require('nightmare'); // make a new nightmare
var nightmare = Nightmare({ show: true }); // display it (change to false for text only)
nightmare
.goto('http://whosebug.com/questions') // go to stack overflow
.evaluate(function () {
var all_options = document.querySelectorAll(".summarycount");
return all_options[0].innerHTML;
})
// .end()
.then(function (result) {
console.log(result);
})
.catch(function (error) {
console.error('Search failed:', error);
});
并打印出“13,844,183”或任何当前问的问题数。但是,当我尝试 return 评估函数中的所有选项时,更改评估然后函数如下所示:
.evaluate(function () {
var all_options = document.querySelectorAll(".summarycount");
return all_options;
})
// .end()
.then(function (result) {
console.log(result[0].innerHTML);
})
它只是打印未定义。因此,由评估函数计算的 return 值不是所有匹配 DOM 元素的正确列表。有没有办法解决?理想情况下,脚本将能够从列表中找到多个元素,选择每个元素,然后在页面上 运行 更多代码(可能涉及选择更多选项),然后评估结果。
问题是求值必须 return 原始类型。我通过处理评估函数中数据的所有点击和处理来解决了我的部分问题。