理解 Puppeteer 的 page.evaluate() QuerySelectorAll 返回空对象
Puppeteer 的 page.evaluate() 方法是在其中执行 JavaScript 的强大工具浏览器,允许您与页面上的元素交互并检索信息。但是,有时您可能会遇到这样的问题:querySelectorAll() 方法返回空对象数组。
此问题源于以下事实:从评估函数返回的值必须是 JSON 可序列化的。元素和文档对象(如 querySelectorAll() 返回的元素和文档对象)无法直接序列化。
解决问题
要解决此问题,需要提取来自元素的所需信息并仅返回 JSON 可序列化数据。对于页面中的链接列表,您可以修改代码如下:
await page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => { return element.href }) return links; }, sel);
此代码将从每个元素中提取 href 属性并返回一个字符串数组,可以是 JSON已连载。
以上是为什么 Puppeteer 的 `page.evaluate()` 和 `querySelectorAll` 返回空对象?的详细内容。更多信息请关注PHP中文网其他相关文章!