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