Dans Puppeteer, la fonction page.evaluate() vous permet d'exécuter du JavaScript personnalisé sur une page Web dans le navigateur. Cependant, il n'est pas immédiatement clair comment transmettre des variables de Node à la fonction page.evaluate() pour les utiliser dans le code évalué.
Lorsque vous essayez de transmettre une variable, l'approche typique consiste à utiliser la syntaxe de la fonction flèche. :
const links = await page.evaluate((evalVar) => {...});
Cependant, si vous rencontrez l'erreur selon laquelle evalVar n'est pas défini dans la fonction flèche, cela signifie que la variable n'est pas transmise à la fonction. correctement.
Pour résoudre ce problème, les variables doivent être transmises comme arguments à la fonction page. La syntaxe ajustée est :
const links = await page.evaluate((evalVar) => {...}, evalVar); // 1. pass variable as an argument
Ici, la variable evalVar est passée comme argument supplémentaire à la fonction flèche, la rendant accessible dans le code évalué.
Cette technique fonctionne pour passer plusieurs variables également. Ajoutez simplement plus d'arguments à l'appel de fonction page.evaluate() :
await page.evaluate((a, b, c) => { console.log(a, b, c) }, a, b, c)
Il est important de s'assurer que les arguments transmis sont soit sérialisables en JSON, soit des JSHandles d'objets dans le navigateur, car ce sont les arguments pris en charge. types pour transmettre des variables à page.evaluate().
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!