首页 >web前端 >js教程 >如何使用'querySelectorAll”修复 Puppeteer 的'page.evaluate”中的空对象返回?

如何使用'querySelectorAll”修复 Puppeteer 的'page.evaluate”中的空对象返回?

Barbara Streisand
Barbara Streisand原创
2024-11-18 09:31:02335浏览

How to Fix Empty Object Returns in Puppeteer's `page.evaluate` with `querySelectorAll`?

在 Puppeteer page.evaluate querySelectorAll 中解析空对象返回

在 Puppeteer 中,尝试通过评估函数使用 querySelectorAll 方法检索文档元素通常会导致空对象数组。这是使用 Puppeteer 时遇到的常见问题。

要解决此问题,需要注意的是,从评估函数返回的值必须是 JSON 可序列化的。当评估复杂元素(例如提供的示例中的“title”元素)时,生成的对象包含不可序列化的值,例如函数。

解决方案在于在返回 JSON 之前从元素中提取所需的信息 -可序列化的值。在本例中,我们的目标是从元素而不是整个元素对象中提取 href 值。

通过修改评估函数,如下所示,您可以成功检索 href 值列表:

await this.page.evaluate((sel) => {
  let elements = Array.from(document.querySelectorAll(sel));
  let links = elements.map(element => {
    return element.href
  })
  return links;
}, sel);

这确保了返回值是 JSON 可序列化的,并解决了结果数组中对象为空的问题。

以上是如何使用'querySelectorAll”修复 Puppeteer 的'page.evaluate”中的空对象返回?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn