【发布时间】:2021-09-25 08:40:28
【问题描述】:
我正在使用 puppeteer 尝试从下面的查询中访问“aria-label”属性,但它返回的结果类型为:
JSHandle@node
这意味着当我尝试 .getAttribute('aria-label') 时,它是 undefined。
我正在尝试从 flatpickr 日历中获取可用日期列表。
谁能告诉我如何正确地做到这一点?
谢谢。
(async () => {
const arias = await page.evaluate(() => {
const results = document.querySelectorAll('span.flatpickr-day:not(.prevMonthDay):not(.nextMonthDay):is(.flatpickr-disabled)');
dates = {};
if (results.length) {
for ( var i = 0; i < results.length; i++ ) {
dates.push(results[i].getAttribute('aria-label'));
}
}
return dates;
});
})
【问题讨论】:
-
您能确认您的
dates是您原始代码中的一个数组吗?像这样(作为一个空对象,{})它会抛出一个 TypeError。除此之外,您能否与 flatpickr 日历共享页面的 URL?对我来说,如果我修复脚本上方的dates类型就可以了。 -
请分享您正在抓取的页面的 URL 或示例代表性标记。
dates应该是一个数组,而不是一个对象。对象没有属性push,如果您将侦听器附加到浏览器控制台以检查错误,您会看到它。
标签: javascript node.js puppeteer javascript-objects flatpickr