62 votes

Transmettre des arguments avec page.evaluate

J’utilise PhantomJS page.evaluate() pour faire du scraping. Mon problème est que le code que je passe à la page webkit est en bac à sable, et n’a donc pas accès aux variables de mon script fantôme principal. Cela rend difficile de rendre le code de grattage générique.

Comment puis-je pousser des arguments dans la page ?

82voto

Weston Points 932

J’ai eu exactement ce problème. Cela peut être fait avec un peu de ruse, car `` on peut aussi accepter une ficelle.

Il y a plusieurs façons de le faire, mais j’utilise un wrapper appelé `` , qui accepte des paramètres supplémentaires à passer à la fonction qui doit être évaluée côté webkit. Vous l’utiliseriez comme ceci:

Et voici la `` fonction:

75voto

Bala Anirudh Points 261

Le changement a été poussé et maintenant vous pouvez l’utiliser comme

Les détails de la poussée sont ici: https://github.com/ariya/phantomjs/commit/81794f9096

15voto

YTL Points 141

Vous pouvez transmettre les arguments à la fonction en tant qu’arguments à page.evaluate.

Exemple:

3voto

Tomas Randus Points 86

Il existe la solution qui fonctionne avec PhantomJS 0.9.2 et 0.2.0 :

2voto

Aakil Fernandes Points 748

Autre possibilité : transmettre les variables avec l’url. Par exemple, pour passer l’objet x

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X