Web grattage à l'aide d'PhantomJS
Est-il un moyen pour exécuter tous les scripts Javascript dans une page web exactement comme le navigateur sans préciser la fonction à exécuter? Dans la plupart des exemples que j'ai vu de ces semblent spécifier quelle portion de code JavaScript que vous voulez exécuter à partir de la raclée de la page web. J'ai besoin de gratter la totalité du contenu et d'exécuter tous les scripts Javascript comme un navigateur et de me faire le dernier code exécuté où l'on peut voir à l'aide de google inspecter?
Je suis sûr qu'il doit y avoir un moyen, mais le code d'exemple de PhantomJS ne semble pas avoir d'exemple aborder cette.
OriginalL'auteur Trancey | 2014-12-14
Vous devez vous connecter pour publier un commentaire.
Vous ne spécifiez pas ce qui est exécutée à partir de la page avec PhantomJS. Vous ouvrez la page avec PhantomJS et tous les JavaScript qui est exécuté dans le navigateur Chrome ou Firefox est également exécutée dans PhantomJS. C'est un navigateur complet sans une "tête".
Il y a quelques différences cependant. En cliquant sur un lien de téléchargement ne sera pas déclencher un téléchargement. Le moteur de rendu qui PhantomJS 1.x est basé sur un fait près de 4 ans, de sorte que certaines pages sont simplement rendus différemment, parce que PhantomJS 1.x ne prend pas en charge cette fonctionnalité. (PhantomJS 2 est sur le chemin et maintenant, à titre officieux de "alpha")
Si vous avez besoin de faire un script de chaque interaction que l'utilisateur est en train de faire sur la page avec du JavaScript ou CoffeeScript. Vous n'avez pas de page appel de fonctions. Vous manipuler des éléments du DOM pour simuler un utilisateur d'interagir avec la page dans le navigateur. Ce qui doit être fait de telle brut façon, parce que la PhantomJS API ne fournissent pas à l'utilisateur de haut niveau-comme des fonctions. Si vous voulez ceux-ci, vous avez à regarder CasperJS qui est construit au-dessus de PhantomJS/SlimerJS.
Il vous fait avoir des fonctions comme
click
,wait
,fetchText
, etc.Si vous voulez le code source de la page de corps avec les balises, puis utilisez
document.body.innerHTML
à l'intérieur depage.evaluate
tout comme dans n'importe quel autre navigateur. Si vous souhaitez la compléter source de la page, vous avez accèspage.content
à l'extérieur du contexte de la page ou obtenirdocument.documentElement.outerHTML
de l'intérieurpage.evaluate
. Nouveau PhantomJS est un navigateur, donc tout ce que vous tapez dans les Outils de développement Chrome, vous pouvez le faire à l'intérieurpage.evaluate
. Je suppose que vous avez pour en savoir plus à propos de JavaScript dans le navigateur pour l'utiliser au mieux. Merci de poser la question la prochaine fois et faire de la recherche.J'apprécie et je vous remercie pour votre réponse. Oui je vais essayer de me trouver dans des problèmes qui est adapté à ce forum.
StackOverflow (SO) n'est pas un forum. Les discussions du Forum ont tendance à aller pour toujours avec beaucoup de virages. La bonne chose c'est que il y a une structure rigide: Q&A. Il y a très peu de place pour les discussions. J'ai particulièrement aversion long commentaire threads, parce que bien sûr, je peux vous aider, mais les futurs lecteurs peuvent être dépassés par la quantité d'allers et retours dans les commentaires (les commentaires peuvent être supprimés). 20 commentaires dans un court laps de temps génère automatiquement un modérateur drapeau. Je peux vous donner des pointeurs dans les commentaires, mais le vrai travail doit être fait par vous. Si vous ne pouvez pas le faire, je suis heureux de répondre à votre question.
OriginalL'auteur Artjom B.