Comment automatiser la navigation en utilisant python?
supposez, je dois effectuer un ensemble de procédure sur un site particulier par exemple, remplissez certains formulaires, cliquez sur le bouton Soumettre, renvoyez les données au serveur, recevez la réponse, encore une fois faire quelque chose basée sur la réponse et envoyer les données au serveur du site web. Je sais qu'il y a un module webbrowser en python, mais je veux le faire sans invoquer aucun navigateur web. Ce doit être un scénario pur.
Est-il un module disponible en python, qui peut m'aider à faire qui?
merci
16 réponses
selenium fera exactement ce que vous voulez et il gère javascript
Toutes les réponses sont vieux, je recommande et je suis un grand fan de demande
à Partir de la page d'accueil:
le module standard d'urllib2 de Python fournit la plupart du HTTP les capacités dont vous avez besoin, mais L'API est complètement cassée. Il a été construit pour un temps différent - et un web différent. Il exige un énorme quantité de travail (même la méthode l'emporte) pour effectuer le plus simple des tâche.
les choses ne devraient pas être comme ça. Pas dans Python.
je pense que la meilleure des solutions, c'est le mélange de demande et BeautifulSoup, je voulais juste mettre à jour la question pour qu'elle puisse être maintenue à jour.
Sélénium http://www.seleniumhq.org/ est la meilleure solution pour moi. vous pouvez le coder avec python, java, ou tout autre langage de programmation que vous aimez avec facilité. et simulation facile qui se transforment en programme.
Il y a beaucoup de modules Python construits qui pourraient aider avec cela. Par exemple, urllib et htmllib.
le problème sera plus simple si vous changez votre approche. Vous dites que vous voulez "remplir certains formulaires, cliquez sur le bouton Soumettre, renvoyer les données au serveur, recevoir la réponse", ce qui ressemble à un processus en quatre étapes.
En fait, ce que vous devez faire est de poster des données à un serveur web et d'obtenir un réponse.
C'est aussi simple que:
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()
(exemple tiré de l'urllib docs).
ce que vous faites avec la réponse dépend de la complexité du HTML et de ce que vous voulez en faire. Vous pouvez vous en tirer avec l'analyse en utilisant une ou deux expressions régulières, ou vous pouvez utiliser le htmllib.Htmlparser classe, ou peut-être un niveau plus élevé plus souple parser comme Belle Soupe.
Selenium2 inclut webdriver, qui a fixations python et permet d'utiliser le pilote HtmlUnit sans tête, ou de passer à firefox ou chrome pour le débogage graphique.
Ne pas oublier zope.testbrowser qui est enveloppant autour de mécaniser .
zope.testbrowser fournit un navigateur Web programmable facile à l'utilisation avec un accent spécial sur le test.
la meilleure solution que j'ai trouvée (et actuellement mise en œuvre) est : - scripts en python utilisant selenium webdriver - PhantomJS Headless browser (si firefox est utilisé vous aurez une interface graphique et sera plus lent)
HTMLUNIT est le paquet si vous êtes un développeur java. http://htmlunit.sourceforge.net/apidocs/index.html
j'ai trouvé iMacros Firefox plugin (qui est gratuit) fonctionne très bien.
il peut être automatisé avec Python en utilisant des interfaces d'objets Windows COM. Voici un exemple de code de http://wiki.imacros.net/Python