> Modules standards > Modules pour internet > Requête http (urllib/urllib2)
Requête http (urllib/urllib2)
Manipulation d'URLs :
- faire import urllib.parse
- parsing d'une URL : parseRes = urllib.parse.urlsplit('http://www.example.com:8080/myApp/info?param1=value1¶m2=value%202%24') : renvoie un objet urllib.parse.SplitResult avec les propriétés :
- parseRes.scheme : ici http
- parseRes.netloc : ici www.example.com:8080
- parseRes.hostname : ici www.example.com
- parseRes.port : ici 8080 (entier)
- parseRes.path : ici /myApp/info
- parseRes.query : ici param1=value1¶m2=value%202%24
- on peut alors parser la query string : urllib.parse.parse_qs(parseRes.query) : renvoie ici {'param1': ['value1'], 'param2': ['value 2$']}
- urllib.parse.quote('value 2$') : encode un paramètre, ici donne value%202%24
- urllib.parse.quote_plus('value 2$') : idem, mais remplace les espaces par des + : ici donne value+2%24
- urllib.parse.urlencode({'param1': 'value1', 'param2': 'value 2$'} : transforme un dictionnaire en query string, ici param1=value1¶m2=value+2%24
Requête :
- forme la plus simple : fh = urllib2.urlopen('http://myserver.org/'); output = fh.read()
- on peut utiliser aussi un objet Request : req = urllib2.Request('http://myserver.org/'); fh = urllib2.urlopen(req); output = fh.read()
- sous forme de post : values = {'var1': 'val1, 'var2': 'val2'}; data = urllib.urlencode(values); req = urllib2.Request('http://myserver.org/', data); fh = urllib2.urlopen(req); output = fh.read()
Requête avec authentification :
- à chaque fois qu'on utilise urlopen, on utiliser en fait un opener qui a des handlers (même si ce sont ceux par défaut).
- manager = urllib2.HTTPPasswordMgrWithDefaultRealm(); manager.add_password(None, myUrl, myUser, myPassword) : on construit un password manager qui utilisera cette authentification pour cette url quelque soit le realm (car on ne connait pas le realm à l'avance !)
- authHandler = urllib2.HTTPBasicAuthHandler(manager) : crée un handler pour ce manager.
- opener = urllib2.build_opener(authHandler); urllib2.install_opener(opener) : crée un opener et l'installe pour l'utiliser automatiquement.
- fh = urllib2.urlopen(theurl) : enfin, ouvre la page.
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert