Heim  >  Artikel  >  Web-Frontend  >  Warum gibt „page.evaluate' von Puppeteer leere Objekte mit „querySelectorAll' zurück?

Warum gibt „page.evaluate' von Puppeteer leere Objekte mit „querySelectorAll' zurück?

DDD
DDDOriginal
2024-11-22 06:49:17619Durchsuche

Why does Puppeteer's `page.evaluate` return empty objects with `querySelectorAll`?

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!

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