Maison >interface Web >js tutoriel >Pourquoi « page.evaluate » renvoie-t-il des objets vides lors de l'utilisation de « querySelectorAll » ?

Pourquoi « page.evaluate » renvoie-t-il des objets vides lors de l'utilisation de « querySelectorAll » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 13:50:02255parcourir

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

Tableau d'objets vide inattendu renvoyé par page.evaluate querySelectorAll

Lors de l'utilisation de la fonction page.evaluate de Puppeteer avec querySelectorAll, les utilisateurs peuvent rencontrer un problème où le tableau renvoyé contient des objets vides.

Cause :

Les valeurs renvoyées par la fonction page.evaluate doivent être sérialisables en JSON. Par défaut, les éléments HTML ne sont pas sérialisables en JSON sans modifications.

Solution :

Pour résoudre ce problème, les données extraites des éléments HTML doivent être modifiées en JSON. format sérialisable. Par exemple, si les données souhaitées sont les valeurs href des éléments, l'extrait de code suivant peut être utilisé :

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

Ce code extrait les valeurs href des éléments et les renvoie sous forme de tableau de chaînes, qui est sérialisable en JSON. En modifiant les valeurs renvoyées, le problème des objets vides peut être évité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn