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