page.evaluate querySelectorAll 返回意外的空对象数组
将 Puppeteer 的 page.evaluate 函数与 querySelectorAll 结合使用时,用户可能会遇到以下问题:返回的数组包含空对象。
原因:
从 page.evaluate 函数返回的值必须是 JSON 可序列化的。默认情况下,HTML 元素不经修改不可序列化为 JSON。
解决方案:
要解决此问题,应将从 HTML 元素中提取的数据修改为 JSON可序列化格式。例如,如果所需的数据是元素的 href 值,则可以使用以下代码片段:
await this.page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => { return element.href; }); return links; }, sel);
此代码从元素中提取 href 值并将它们作为字符串数组返回,这是 JSON 可序列化的。通过修改返回值,可以避免空对象的问题。
以上是为什么使用'querySelectorAll”时'page.evaluate”返回空对象?的详细内容。更多信息请关注PHP中文网其他相关文章!