IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

script qui permet d'ouvrir un site web, remplir un formulaire et le valider


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut script qui permet d'ouvrir un site web, remplir un formulaire et le valider
    bonjour les amis,
    je veux faire un scripte python qui fait ça :
    1- accéder à un formulaire dans un site web (lien url)
    2- remplir les zone de textes qui se trouvent dans le formulaire avec des valeurs prédéfinies
    3- et puis valider le formulaire (faire submit).

    quelqu'un a une idée ?
    Merci d'avance

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    C'est aussi un code que j'ai en projet depuis plusieurs mois.
    On m'avait indiqué que le module mechanize permet de faire cela, mais je ne suis pas arrivé à l'utiliser. Donc je ne peux pas te renseigner plus.
    Mais le sujet m'intéresse et je pourrais peut être m'y mettre.

    C'est une question qui irait sans doute mieux dans le forum Réseau/Web, tu aurais peut être plus de réponses.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    je suis d'accord avec toi,
    mais le module mechanize existe sous perl et n'est pas sous python.
    il y a aussi le module CURL sous php,mais le probleme avec perl et php est que ces modules n'interrogent pas les codes javascript....
    je veux réaliser ce script avec python

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Alors comment faire ?
    Il faudrait connaître
    - tout ce qui concerne les échanges entre ordinateurs par l'internet, les protocoles, les couches, les paquets, les requêtes etc etc etc
    - les fonctions de Python relatives à ce bazar
    N'ayant aucune connaissance dans le premier sujet, je ne sais ce qu'il faut trouver concernant le second

    Il faut se lancer dans l'étude de
    19. Internet Data Handling
    et
    21. Internet Protocols and Support
    ici
    http://docs.python.org/library/index.html

    Ou là
    http://www.python.org/doc/2.5.2/lib/contents.html
    Ça semble être présenté de manière différente.

    J'ai toujours eu la flemme jusqu'à présent.
    Il faudrait un bon bouquin aussi.
    Tu vois ça comment pour ta part ?

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    merci infiniment eyquem,
    je vais essayé ça et après je vais te donner la conception.
    merci encore une fois

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Mechanize existe en Python
    http://wwwsearch.sourceforge.net/mechanize

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    oui t as raison,
    j'ai pensé qu'il n'existe pas sous python.
    vous connaissez autres modules comme mechanize sous python ?

  8. #8
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    vous connaissez autres modules comme mechanize sous python ?
    Tu as aussi 'clientform' mais mechanize est vraiment TRES bien !
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  9. #9
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Sinon si les pages en question n'utilisent pas AJAX il est possible de passer directement par la couche HTTP : http://www.w3.org/Protocols/rfc2616/...c9.html#sec9.5
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  10. #10
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    merci bien,le formulaire que je veux remplir n'utilise pas ajax,il utilise javascript

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Désolé pour cette question de débutant mais est ce que le procédé est le même pour simuler une connection à un site qui demande un login et un password ?
    Parce que je suis confronté à ce problème actuellement. url2lib ne semble pas capable de simuler un environement suffisant pour que la session soit gardée en mémoire. résultat même avec le navigateur ouvert avec le site à côté, urlopen renvoie inlassablement la page du login alors que celle-ci a déjà été remplie précédement dans le navigateur.

    C'est donc ce type d'extention qu'il faudrait utiliser pour se balader dans un site qui demande login et password ?

    EDIT: je me répond à moi même: oui c'est le même principe pour un login/password.
    J'ai trouvé ce post inétressant qui m'a bien aidé:
    http://www.developpez.net/forums/d38...eb-via-python/

    Maintenant j'arrive à me connnecter au site avec mot de passe et login.. par contre c'est sans doute stupide mais je ne trouve pas la méthode pour récupérer le contenu d'une page avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    br = mechanize.Browser()
    Pour lire le titre de cette page par exemple, c'est br.title() ... mais pour le contenu de la page je n'arrive pas à trouver (j'ai essayé à tout hasard avec br.read() mais sans succès...

  12. #12
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    tu peux recuperer le code source d'une page web avec ce petit code la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import urllib,urllib2
    url = "http://www.google.fr"
    fp = urllib2.urlopen(url).read()
    print fp
    moi je veux acceder a une page web qui contient un formulaire,et le remplir a partir une base de donnees et puis le valider.j'arrive pas a accomplir ca ... je suis entrain d'essayer...

    pouvez vous m'envoyer ton scripte pour se logger à une page web,
    avec quel editeur travaille tu ? je veux un editeur qui possede son propre browser.
    python ne trouve pas le module mechanize (import mechanize),d'ou veint je vais l'installer... ?

    merci infiniment

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Oui, mais le code que tu donnes ne peux pas fonctionner pour une page web avec login. Apparement, il existe une sorte d'environement qui est à simuler afin de garder les cookies par exemple ou tous les autres systèmes déstinés à garder ton identification le temps d'une session.

    Voilà où j'en suis. On va peux être y arriver en s'entre-aidant :-)
    J'ai suivi le message que j'ai mis en lien et j'arrive à me connecter sur developpez sans intervenir manuellement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import mechanize
     
    br = mechanize.Browser()
    br.open('http://developpez.net/forums/')
     
    print br
    br.select_form(None,None,0)
    br.form.set_value('ici-ton-login', name='vb_login_username')
    br.form.set_value('ici-ton-password', name='vb_login_password')
    br.submit()
    print br.title()
    br.follow_link(url='http://developpez.net/forums/')
    br.follow_link(url_regex=r'private.php$')
    print br.title()
     
    br.close()
    Et l'ordinateur me renvoie ceci en sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Browser visiting http://www.developpez.net/forums/>
    Forum des développeurs
    Forum des développeurs - Boîte de réception
    Le fait qu'il affiche *boite de reception* dans le titre prouve bien que le programme s'est bien connecté au site. Enfin je crois... mais c'est à vérifier en récupérant le code source HTML de la page, ce dont je suis actuellement incapable.
    Bref la solution n'est plus très loin.
    Après ce sera à tester avec d'autres sites en croisant les doigts que les systèmes d'identifications soient compatible avec mechanize...

    Pour tout cela il faut absoluement que tu installes mechanize.
    Moi je suis sous linux, j'ai fait comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo easy_install mechanize
    bon si tu es sous windows je ne sais pas comment procéder désolé.

    Ce qui me fait raler c'est que je suis incapable de récupérer le contenu de la page avec br.quelquechose() ... c'est dommage.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Pour récupérer le contenu de la page j'ai fini par trouver.
    Il faut assigner une variable à follow link et c'est à ce niveau qu'on peut utiliser read()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    currentPage= br.follow_link(url_regex=r'private.php$')
    print currentPage.read()
    Maintenant j'ai essayé sur un autre site et ça ne marche pas. Apparement chaque site à sa façon de gérer ça. C'est un peu compliqué juste pour simuler un login pfff...

  15. #15
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    impeccable arketip
    je suis sous windows et je peux pas installer mechanize, bon je vais essayer.
    avec quel editeur python tu travailles ? est ce qu'il contient son propre navigateur ?

    je veux remplir un formulaire automatiquement et le valider.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Ha si ça marche avec les autres sites mais il y a une astuce avec follow_link: ça n'accepte pas les liens complets mais juste la dernière partie.

    Par exemple sur un autre site pour accéder à ma mailbox, je ne dois pas fournir l'entièreté du lien mais seulement le script à lancer, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    currentPage= br.follow_link(url='msg_inbox.asp')
    print currentPage.read()
    Pour connaitre les liens dispo on peut regarder le html ou insérer cette ligne au niveau de la page précédente (ici br)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for thisLink in br.links():
    	print thisLink
    .links() renvoie un tableau de lien sous forme ordonnée avec la base_url mais aussi celui qui m'interresse: url (tout court)


    Par contre j'ignorais que mechanize pour python était difficile à trouver sous windows. Le mieux c'est peut être de poster un nouveau message 'comment installer mechanize sous windows ?' et tu verras bien si quelqu'un à la solution...
    Sinon il est possible que tu puisses installer mechanize via easy install pour windows.
    Sur ce lien il y a une section 'Windows Notes' qui fait références à un exe à lancer sur windows.
    http://peak.telecommunity.com/DevCenter/EasyInstall
    Je n'ai pas approfondi plus loin, à toi de voir, mais ça semble être fait pour ça.

  17. #17
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 120
    Points : 50
    Points
    50
    Par défaut
    merci infiniment,

    j'ai réussi à installer mechanize et ClientForm.

    je veux faire un script qui rempli un formulaire web automatiquement et puis le valider.
    t'as une idée comment on peut valider un formulaire ?

Discussions similaires

  1. script qui permet d'archiver et d'alimenter par ftp un site
    Par Kalimerokad dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 10/08/2009, 12h08
  2. Quel langage pour un script qui connecte automatiquement sur un site ?
    Par dephesity dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 13/08/2007, 11h11
  3. Code qui permet d'ouvrir une fenetre browser comme pour un input file
    Par Jim_Nastiq dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/06/2007, 15h11
  4. Ouvrir un site web local avec une autre machine en intranet
    Par Auxtown-Son dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 07/09/2006, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo