Heim  >  Artikel  >  Web-Frontend  >  Warum gibt „page.evaluate“ leere Objekte zurück, wenn „querySelectorAll“ verwendet wird?

Warum gibt „page.evaluate“ leere Objekte zurück, wenn „querySelectorAll“ verwendet wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 13:50:02207Durchsuche

Why Does `page.evaluate` Return Empty Objects When Using `querySelectorAll`?

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!

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