web-dev-qa-db-fra.com

Comment automatiser la navigation en utilisant python?

supposons que je doive exécuter un ensemble de procédures sur un site Web particulier Remplir des formulaires, cliquer sur le bouton Envoyer, renvoyer les données au serveur, recevoir la réponse, refaire quelque chose en fonction de la réponse et renvoyer les données. sur le serveur du site Web ... Je sais qu'il existe un module de navigateur Web en python, mais je souhaite le faire sans faire appel à un navigateur Web. Il faut être un script pur.

Existe-t-il un module disponible en python, qui peut m'aider à le faire?
Merci

27
kush87

Vous pouvez également consulter mécaniser . Il est destiné à gérer "la navigation Web programmée avec état" (selon leur site).

16
arcanum

Selenium fera exactement ce que vous voulez et gère javascript

18
adaptive

Toutes les réponses sont anciennes, je recommande et je suis un grand fan de demandes

De la page d'accueil:

Le module urllib2 standard de Python fournit la plupart du HTTP fonctionnalités dont vous avez besoin, mais l'API est complètement cassé. Il a été construit pour un temps différent - et un web différent. Cela nécessite un énorme La quantité de travail (même les substitutions de méthode) pour effectuer le plus simple de les tâches.

Les choses ne devraient pas être comme ça. Pas en Python.

8
Foo Bar User

Je pense que la meilleure solution est la combinaison de requêtes et BeautifulSoup , je voulais juste mettre à jour la question afin qu'elle puisse être mise à jour.

7
Leonardo

Selenium http://www.seleniumhq.org/ est la meilleure solution pour moi. vous pouvez le coder facilement avec python, Java ou tout autre langage de programmation. et une simulation facile qui convertit en programme.

3
Yuda Prawira

Ne pas oublier zope.testbrowser qui est enveloppant autour de mécaniser .

zope.testbrowser fournit un navigateur Web programmable facile à utiliser avec un accent particulier sur les tests.

2
JamesThomasMoon1979

Il existe de nombreux modules Python intégrés qui pourraient vous aider. Par exemple urllib et htmllib .

Le problème sera plus simple si vous modifiez votre approche. Vous dites que vous voulez "remplir des formulaires, cliquer sur le bouton d'envoi, renvoyer les données au serveur, recevoir la réponse", ce qui ressemble à un processus en quatre étapes.

En fait, vous devez publier des données sur un serveur Web et obtenir une 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 la documentation urllib).

Ce que vous faites avec la réponse dépend de la complexité du code HTML et de ce que vous voulez en faire. Vous pouvez l’analyser avec une expression régulière ou deux, ou bien utiliser la classe htmllib.HTMLParser, ou peut-être un analyseur plus souple de niveau supérieur, tel que Beautiful Soup .

2
roomaroo

Selenium2 inclut webdriver, qui a python bindings et permet d’utiliser le pilote htmlUnit sans tête, ou de passer à Firefox ou à Chrome pour le débogage graphique.

2
Nathan

HTMLUNIT est le package si vous êtes un développeur Java . http://htmlunit.sourceforge.net/apidocs/index.html

1
Guru

J'ai trouvé que le plugin iMacros Firefox (qui est gratuit) fonctionne très bien.

Il peut être automatisé avec Python à l'aide d'interfaces d'objet Windows COM. Voici un exemple de code provenant de http://wiki.imacros.net/Python . Il nécessite Extensions Windows Python :

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()
1
twasbrillig

La meilleure solution que j'ai trouvée (et en train d'implémenter) est la suivante: - scripts en python utilisant Selenium webdriver - navigateur sans tête PhantomJS (si Firefox est utilisé, vous aurez une interface graphique et serez plus lent)

1
Kostas Demiris

Internet Explorer spécifique, mais plutôt bon:

http://pamie.sourceforge.net/

L'avantage par rapport à urllib/BeautifulSoup est qu'il exécute également le Javascript car il utilise IE.

0
fraca7

Vous voulez probablement urllib2 . Il peut gérer des tâches telles que HTTPS, les cookies et l’authentification. Vous voudrez probablement aussi BeautifulSoup pour vous aider à analyser les pages HTML.

0
Steven Huwig

Vous pouvez consulter ces diapositives du last italien italien pycon (pdf): L’auteur a énuméré la plupart des bibliothèques pour faire du scraping et de la navigation automatique en python. alors vous pouvez y jeter un coup d'oeil.

J'aime beaucoup twill (ce qui a déjà été suggéré), qui a été développé par l’un des auteurs de nose et qui vise spécifiquement à tester des sites Web.

0
dalloliogm

httplib2 + beautifulsoup

Utilisez firefox + firebug + httpreplay pour voir ce que le javascript transmet au navigateur depuis le site Web. En utilisant httplib2, vous pouvez essentiellement faire de même via post et obtenir

0
user428370

Pour l'automatisation, vous voudrez certainement vérifier

webbot 

Il est basé sur Selenium et offre beaucoup plus de fonctionnalités avec très peu de code, comme la recherche automatique d’éléments pour effectuer des actions telles que click, type en fonction de vos paramètres.

Cela fonctionne même pour les sites avec des noms de classe et des identifiants changeant de manière dynamique.

Voici la doc: https://webbot.readthedocs.io/

0
Natesh bhat