Bonjour,
Comment un script Pyton peut-il se connecter à une page web, si il n'exite ni champs 'input type' ni même une balise 'form' ?
Merci à qui peut m'aiguiller.
Version imprimable
Bonjour,
Comment un script Pyton peut-il se connecter à une page web, si il n'exite ni champs 'input type' ni même une balise 'form' ?
Merci à qui peut m'aiguiller.
Bonjour
Est ce que tu peux étre plus explicite sur ta demande tu veux dire quoi pas te connecter à un site web ?
Remplir des champs dans une page automatiquement ?
Voici comment je me connecte à un forum pyton.
Ceci est possible car dans le code source de la page web, j'ai trouvé les balises form et input et donc mes variables vb_login_username etCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #!/usr/bin/python import cookielib, urllib, urllib2 import os.path import sys COOKIEFILE = 'cookies.lwp' cj = None vb_login_username = 'mon_login' vb_login_password = 'mon_mot_de_passe' urlopen = urllib2.urlopen Request = urllib2.Request cj = cookielib.LWPCookieJar() if os.path.isfile(COOKIEFILE): # si nous avons un fichier cookie déjà sauvegardé alors charger les cookies dans le Cookie Jar cj.load(COOKIEFILE) # Maintenant nous avons besoin d'avoir notre Cookie Jar installé dans l'opener pour chercher des URLs if cookielib is not None: # si nous utilisons cookielib alors nous appelons HTTPCookieProcessor et installons l'opener dans urllib2 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) else: # Puisque nous utilisons ClientCookie, nous appelons HTTPCookieProcessor et installons l'opener dans ClientCookie opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cj)) ClientCookie.install_opener (opener) mon_url = 'http://archives.devshed.com/forums/python-122/' # On envoie login/password au site qui nous renvoie un cookie de session values = {'vb_login_username':vb_login_username, 'vb_login_password':vb_login_password } txdata = urllib.urlencode(values) txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'} try: req = Request(mon_url, txdata, txheaders) ### création d'un objet request handle = urlopen(req) ### on l'ouvre pour renvoyer un handle sur l'url # Ecriture : f = open("forum_python.html", "w") f.write(handle.read()) f.close() except IOError, e: sys.exit() else: print handle.info()
vb_login_password. Cependant certains sites affichent un formulaire identique, avec des champs à remplir. Mais le code source ne montre pas les balises form. Comment une telle page web est-elle générée ? Est-il possible d'accéder aux noms des champs de saisie?
Si le code source ne montre pas les balises, c'est qu'il y a de forte chance qu'elles soient générées en dynamique par du javascript.
Essayes avec l'extension firebug de firefox. En utilisant le module "inspecter", je pense que tu devrais voir les balises.
Pourrais tu nous donner un site dans ce cas ?
Merci poure la réponse. Voici le site en question:
Merci pour la réponse et voici le site en question :
http://194.214.115.57:8088/parent.html
Je vais essayer l'extension firebug de firefox...
Donc le 1er input est :et le 2ièmeCode:<input type="text" class="CelluleTexte Texte10 AlignementMilieuVertical" style="width: 11em;" title="Saisissez votre identifiant." onkeyup="if (GNavigateur.IsToucheRetourChariot ()) SetFocus(zonePwd)" role="wairole:textfield" tabindex="0" id="zoneIdent" name="zoneIdent"/>
Par contre pas de balise <form, le post se fait aussi en javascript. Il va donc falloir décortiquer le code javascript pour savoir ce qu'il fait.Code:<input type="password" class="CelluleTexte Texte10 AlignementMilieuVertical" style="width: 11em;" title="Saisissez votre mot de passe." onkeyup="if (GNavigateur.IsToucheRetourChariot ()) SetFocus(zoneBtn)" role="wairole:secret" tabindex="0" id="zonePwd" name="zonePwd"/>
Encore merci pour cette réponse. Je ne connaissais pas vraiment Firefox et encore moins Firebug. Je viens donc de l'installer et effectivement j'obtiens les noms des champs texte. Quant à la balise form, je vais voir ce que je peux obtenir du code javascript.