Verstehen, dass page.evaluate() QuerySelectorAll von Puppeteer leere Objekte zurückgibt
Die Methode page.evaluate() von Puppeteer ist ein leistungsstarkes Tool zum Ausführen von JavaScript darin Der Browser ermöglicht es Ihnen, mit Elementen auf der Seite zu interagieren und Informationen abzurufen. Manchmal kann jedoch ein Problem auftreten, bei dem die Methode querySelectorAll() ein Array leerer Objekte zurückgibt.
Dieses Problem ergibt sich aus der Tatsache, dass die von der Funktion „evaluieren“ zurückgegebenen Werte JSON-serialisierbar sein müssen. Elemente und Dokumentobjekte, wie sie von querySelectorAll() zurückgegeben werden, können nicht direkt serialisiert werden.
Problem lösen
Um dieses Problem zu beheben, ist es notwendig, die zu extrahieren Ermitteln Sie die gewünschten Informationen aus den Elementen und geben Sie nur JSON-serialisierbare Daten zurück. Im Falle einer Linkliste von der Seite können Sie den Code wie folgt ändern:
await page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => { return element.href }) return links; }, sel);
Dieser Code extrahiert das href-Attribut aus jedem Element und gibt ein Array von Zeichenfolgen zurück, bei dem es sich um JSON handeln kann serialisiert.
Das obige ist der detaillierte Inhalt vonWarum gibt „page.evaluate()' von Puppeteer mit „querySelectorAll' leere Objekte zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!