Mécaniser et Javascript
Je veux utiliser Mécaniser pour simuler la navigation d'une page web avec active JavaScript, y compris les Événements DOM et AJAX, et jusqu'à présent je n'ai trouvé aucun moyen de le faire.
J'ai regardé quelques Python client navigateurs qui prennent en charge JavaScript comme Spynner et Zope, et aucun d'entre eux fonctionnent vraiment pour moi. Spynner accidents de PyQt tout le temps, et Zope ne prend pas en charge JavaScript, comme il semble.
Est-il un moyen de simuler la navigation avec Python (pas de processus supplémentaire) comme WATIR ou des bibliothèques de manipuler Firefox ou Internet Explorer tout en soutenant Javascript que si parcourez actuellement la page?
- Le Zope test de navigateur (construit sur mécaniser) n'a jamais prétendu à l'appui de JavaScript; où avez-vous lu qu'il le pourrait?
- Pourriez-vous expliquer le problème que vous essayez de résoudre? Il se pourrait que vous ne pouvez pas besoin de JavaScript activé après tout.
- Dites-nous ce que vous essayez de faire, et nous vous dirons si nous pouvons vous aider!
- Je suis en train de simuler la navigation à l'aide strictement python. Je ne peux pas utiliser autre chose parce que j'ai besoin d'utiliser certains réglages spécifiques et des crochets que je peux (pour l'instant) uniquement le faire en python. Je suis prêt à même de faire des efforts et essayer et pont de Mécaniser et d'PyV8, mais je n'ai aucune idée de par où commencer... quelqu'un A déjà fait quelque chose comme ça avant?
Vous devez vous connecter pour publier un commentaire.
J'ai joué avec cette nouvelle alternative de Mécaniser (j'adore) appelé Phantom JS.
C'est un full web, kit de navigateur comme Safari ou Chrome, mais est décapité et scriptable. Vous script en javascript, pas de python (pour autant que je sais au moins).
Il y a des scripts d'exemple pour vous aider à démarrer. C'est comme beaucoup d'aide de Firebug. J'ai seulement passé quelques min à l'aide, mais j'ai trouvé j'ai été assez productif dès le début.
De http://wwwsearch.sourceforge.net/mechanize/faq.html#general
Fondamentalement, si vous voulez quelque chose qui traite de javascript alors vous avez besoin d'un réel moteur javascript, ces impliquent toujours l'automatisation d'un vrai navigateur (je suis, y compris sans tête dans cette).
Java de l'interface htmlunit ne pas faire un très bon travail comme il n'utilise pas un moteur javascript d'un véritable navigateur. Phantom JS sons idéal (comme newz2000 souligne) cependant, je trouve que lorsque l'on manipule des pages avec javascript, il peut être très difficile à déboguer votre script si vous ne pouvez pas réellement voir la page que vous avez affaire.
Cela conduit à des solutions telles que Selenium Webdriver qui a une API python pour automatiser les différents navigateurs, cependant, vous devez exécuter une application java jar et il lance le navigateur, donc pas pure python solution que vous êtes après (mais je pense que c'est aussi proche que vous pouvez obtenir).
Vous pouvez utiliser le Sélénium avec Python. Vous pouvez ensuite gratter contenu généré par JavaScript ainsi que de manipuler la page avec JavaScript supplémentaire (comme Python).
Vous pouvez exécuter le code en Python REPL et utiliser la saisie semi-automatique de découvrir les méthodes disponibles sur
browser
ou quel que soit l'élément que vous avez sélectionné. Ou faire quelque chose commeprint(dir(browser))
pour voir ce qui est disponible.Un exemple sur la façon d'utiliser PyV8, afin d'exécuter du JS sur un DOM avec python peuvent être trouvés ici:
https://github.com/buffer/thug
Ce devrait être assez facile de le faire fonctionner avec mechanize.