Heim > Artikel > Web-Frontend > Warum gibt „page.evaluate' von Puppeteer leere Objekte mit „querySelectorAll' zurück?
Puppeteer evaluierte QuerySelectorAll, die leere Objekte zurückgibt
Wenn Sie die page.evaluate-Funktion von Puppeteer verwenden, um Seitenelemente mit querySelectorAll abzufragen, kann es zu einem Problem kommen Das zurückgegebene Array enthält leere Objekte. Dies liegt daran, dass JavaScript-Objekte nicht von Natur aus JSON-serialisierbar sind.
Eine mögliche Lösung besteht darin, bestimmte Daten aus den Elementen zu extrahieren, um sicherzustellen, dass sie in JSON serialisiert werden können. Wenn Sie beispielsweise am href-Attribut von Elementen interessiert sind, können Sie Ihren Code wie folgt ändern:
const list = await page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => element.href); return links; }, sel);
Dieser Code gibt ein Array von Zeichenfolgen zurück, die die href-Attribute der ausgewählten Elemente darstellen kann einfach serialisiert und gedruckt werden.
Das obige ist der detaillierte Inhalt vonWarum gibt „page.evaluate' von Puppeteer leere Objekte mit „querySelectorAll' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!