Se connecter / S'enregistrer

Résolu [Python] requete page internet avec variable en POST

Solutions (15)
Tags :
  • Python
  • web
  • Programmation
|
Bonjour,

j'ai réussi a récupérer une page web simple grâce a urlopen du module urllib, mais je souhaiterai maintenant récupérer une page web qui demande des paramètres passés en POST.

Ma question est donc : comment cela est-il possible?

D'avance merci pour votre aide

@+
Contenus similaires
  • Autres pages sur : python requete page internet variable post
Meilleure solution
partage
|
Peut-être en lui ajoutant un:
  1. parra = parra.encode('utf-8')

Quitte à avoir un autre encodage (iso-8859-1 ?)
Citation :
The following example uses the POST method instead. Note that params output from urlencode is encoded to bytes before it is sent to urlopen as data
  • Commenter cette solution |
Score
0
òh
òi
|
-_-
Tu veux j’écrive le code de la prochaine application que tu veux faire aussi? En 14 langages différents tant qu'on y est, au cas ou quoi les gens voit pas bien le premier ou le comprennent pas....
  • Commenter cette réponse |
Score
0
òh
òi
, Vieux c*n psychorigide |
T'aurai pu aussi ajouter les import, mais bon ça ira .
  • Commenter cette réponse |
Score
0
òh
òi
|
.... oulaaa t'es exigeant toi. Ceux qui lisent ont des yeux et un cerveau, si ya une faute de frappe il le remarquerons aussi bien que toi, ou au pire à l’exécution...

Voila c'est fait... heureux ?
  • Commenter cette réponse |
Score
0
òh
òi
, Vieux c*n psychorigide |
Et éditer ça te dit rien ? :o 
  • Commenter cette réponse |
Score
0
òh
òi
|
lool oui je vois ma faute de frappe, ET d'orthographe ^^
Désolé pour les deux, je l'ai écrit juste pour te répondre ;) 

Merci de ta précision CRicky :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Et ça devrait se finir par ...se :p 

Au fait, si vous voulez analyser le code HTML retourner (par exemple pour récupérer d'autres liens (POST ou pas) dans le HTML retrourné), le plus simple est de faire une classe qui hérite de html.parser.HTMLParser
  • Commenter cette réponse |
Score
0
òh
òi
, Vieux c*n psychorigide |
Y'a une faute de frappe dans ton code, un coup du mets htmlResponce et apr-s htmlReponce (sans le S ) .
  • Commenter cette réponse |
Score
0
òh
òi
|
  1. parametre=urllib.parse.urlencode({'ipaddress':'123.123.123.123'})
  2. parametre = parametre.encode('utf-8')
  3.  
  4. htmlReponse = urllib.request.urlopen("http://www.frameip.com/whois/whois.php", parametre)
  5.  
  6. resultat = str(htmlReponse.read())


Voila, ca te donne le code complet html généré par le site (en l'occurence les resultat du whois)
  • Commenter cette réponse |
Score
0
òh
òi
, Vieux c*n psychorigide |
DivX_666
Salut, est ce que tu pourrai poster ici le script utilisé pour envoyer les requêtes ? avec par exemple le site que tu as utilisé pour tes essais ? (histoire d'avoir un truc clair :D  )
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par DivX_666.
  • Commenter cette réponse |
Score
0
òh
òi
|
oK merci a vous deux, je vais tester ca et vous dirais ce que ca donne :) 

EDIT : merci, c'est nikel !
  • Commenter cette réponse |
Score
0
òh
òi
|
Avec la version 3.1, ça fonctionnait bien de cette façon. Il ont changés quelques trucs au niveau de l'encodage des url sur la dernière version.

Sinon, avec encode, ça transforme effectivement bien en binaire (on voit un b devant la chaine si tu l'affiches).

Les encodages utf-8 et iso-8859-1 sont identiques sur la plage ASCII (pas l'ASCII étendu, c'est à dire de 0 à 128 sans les accents).
  • Commenter cette réponse |
Score
0
òh
òi
|
Oui j'ai trouver cet exemple deja, mais il ne fonction pas car j'ai la version 3.2 de Python, mais j'ai trouver pour cette version (pas beaucoup de différence).

Mais le problème est qu'il n'accepte pas non plus mes paramètres.
Lien de l'exemple pour la version 3.2 : ici

Résultat :
  1. >>> parra = urllib.parse.urlencode({'ipaddress':'xxx.xxx.xxx.xxx'})
  2. >>> fff = urllib.request.urlopen("http://www.frameip.com/whois/whois.php", parra
  3. )
  4. Traceback (most recent call last):
  5. File "<stdin>", line 1, in <module>
  6. File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
  7. return opener.open(url, data, timeout)
  8. File "C:\Python32\lib\urllib\request.py", line 364, in open
  9. req = meth(req)
  10. File "C:\Python32\lib\urllib\request.py", line 1052, in do_request_
  11. raise TypeError("POST data should be bytes"
  12. TypeError: POST data should be bytes or an iterable of bytes. It cannot be str.


Et la je sais pas trop comment lui faire plaisir xD
  • Commenter cette réponse |
Score
0
òh
òi
|
http://docs.python.org/library/urllib.html#examples

Le 2ème exemple est pour du post.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS