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

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

DDD
Freigeben: 2024-11-11 18:38:02
Original
870 Leute haben es durchsucht

Why Does Puppeteer's `page.evaluate()` With `querySelectorAll` Return Empty Objects?

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage