首頁 > web前端 > js教程 > 為什麼 Puppeteer 的 `page.evaluate()` 和 `querySelectorAll` 會回傳空物件?

為什麼 Puppeteer 的 `page.evaluate()` 和 `querySelectorAll` 會回傳空物件?

DDD
發布: 2024-11-11 18:38:02
原創
888 人瀏覽過

Why Does Puppeteer's `page.evaluate()` With `querySelectorAll` Return Empty Objects?

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

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