Heim  >  Artikel  >  Web-Frontend  >  Wie behebe ich die Rückgabe leerer Objekte in „page.evaluate“ von Puppeteer mit „querySelectorAll“?

Wie behebe ich die Rückgabe leerer Objekte in „page.evaluate“ von Puppeteer mit „querySelectorAll“?

Barbara Streisand
Barbara StreisandOriginal
2024-11-18 09:31:02265Durchsuche

How to Fix Empty Object Returns in Puppeteer's `page.evaluate` with `querySelectorAll`?

Auflösen leerer Objektrückgaben in Puppeteer page.evaluate querySelectorAll

In Puppeteer wird versucht, Dokumentelemente mithilfe der Methode querySelectorAll über die Funktion „evaluieren“ abzurufen führt oft zu einem Array leerer Objekte. Dies ist ein häufiges Problem, das bei der Arbeit mit Puppeteer auftritt.

Um dieses Problem zu beheben, ist es wichtig zu beachten, dass die von der Auswertungsfunktion zurückgegebenen Werte JSON-serialisierbar sein müssen. Bei der Auswertung komplexer Elemente wie dem „title“-Element im bereitgestellten Beispiel enthalten die resultierenden Objekte nicht serialisierbare Werte, wie z. B. Funktionen.

Die Lösung besteht darin, die gewünschten Informationen aus den Elementen zu extrahieren, bevor das JSON-Element zurückgegeben wird. serialisierbare Werte. In diesem Fall wollen wir die href-Werte aus den Elementen extrahieren und nicht aus den gesamten Elementobjekten.

Durch Ändern der Auswertungsfunktion wie unten gezeigt können Sie erfolgreich eine Liste von href-Werten abrufen:

await this.page.evaluate((sel) => {
  let elements = Array.from(document.querySelectorAll(sel));
  let links = elements.map(element => {
    return element.href
  })
  return links;
}, sel);

Dadurch wird sichergestellt, dass die zurückgegebenen Werte JSON-serialisierbar sind, und das Problem leerer Objekte im Ergebnisarray wird behoben.

Das obige ist der detaillierte Inhalt vonWie behebe ich die Rückgabe leerer Objekte in „page.evaluate“ von Puppeteer mit „querySelectorAll“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn