Heim > Artikel > Web-Frontend > Warum gibt „page.evaluate“ leere Objekte zurück, wenn „querySelectorAll“ verwendet wird?
Unerwartetes leeres Objektarray, das von page.evaluate querySelectorAll zurückgegeben wird
Bei der Verwendung der page.evaluate-Funktion von Puppeteer mit querySelectorAll können Benutzer auf ein Problem stoßen, bei dem Das zurückgegebene Array enthält leer Objekte.
Ursache:
Die von der page.evaluate-Funktion zurückgegebenen Werte müssen JSON-serialisierbar sein. Standardmäßig sind HTML-Elemente ohne Änderungen nicht JSON-serialisierbar.
Lösung:
Um dieses Problem zu beheben, sollten die extrahierten Daten aus den HTML-Elementen in JSON geändert werden serialisierbares Format. Wenn es sich bei den gewünschten Daten beispielsweise um die href-Werte der Elemente handelt, kann das folgende Code-Snippet verwendet werden:
await this.page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => { return element.href; }); return links; }, sel);
Dieser Code extrahiert die href-Werte aus den Elementen und gibt sie als Array von Zeichenfolgen zurück. welches JSON-serialisierbar ist. Durch Ändern der zurückgegebenen Werte kann das Problem leerer Objekte vermieden werden.
Das obige ist der detaillierte Inhalt vonWarum gibt „page.evaluate“ leere Objekte zurück, wenn „querySelectorAll“ verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!