首頁 > web前端 > js教程 > 為什麼使用'querySelectorAll”時'page.evaluate”返回空物件?

為什麼使用'querySelectorAll”時'page.evaluate”返回空物件?

Patricia Arquette
發布: 2024-11-13 13:50:02
原創
264 人瀏覽過

Why Does `page.evaluate` Return Empty Objects When Using `querySelectorAll`?

page.evaluate querySelectorAll 傳回意外的空物件陣列

將Puppeteer 的page.evaluate 函數與query遇到以下問題:傳回的陣列包含空物件。

原因:

從 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板