147 votes

Comment joindre des URL absolues et relatives ?

J'ai deux URL :

 url1 = "http://127.0.0.1/test1/test2/test3/test5.xml"
url2 = "../../test4/test6.xml"

Comment puis-je obtenir une URL absolue pour url2 ?

282voto

Cédric Julien Points 24177

Vous devez utiliser urlparse.urljoin :

 >>> import urlparse
>>> urlparse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'

Avec Python 3 (où urlparse est renommé en urllib.parse ), vous pouvez l' utiliser comme suit :

 >>> import urllib.parse
>>> urllib.parse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'

21voto

pcv Points 355

Si votre chemin relatif se compose de plusieurs parties, vous devez les joindre séparément, car urljoin remplacerait le chemin relatif, ne le joindrait pas. Le moyen le plus simple de le faire est d'utiliser posixpath .

 >>> import urllib.parse
>>> import posixpath
>>> url1 = "http://127.0.0.1"
>>> url2 = "test1"
>>> url3 = "test2"
>>> url4 = "test3"
>>> url5 = "test5.xml"
>>> url_path = posixpath.join(url2, url3, url4, url5)
>>> urllib.parse.urljoin(url1, url_path)
'http://127.0.0.1/test1/test2/test3/test5.xml'

Voir aussi : Comment joindre les composants d'un chemin lorsque vous construisez une URL en Python

11voto

Shikhar Mall Points 11
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml']
base = ''
map(lambda e: urlparse.urljoin(base, e), es)

5voto

Talha Ashraf Points 60
>>> from urlparse import urljoin
>>> url1 = "http://www.youtube.com/user/khanacademy"
>>> url2 = "/user/khanacademy"
>>> urljoin(url1, url2)
'http://www.youtube.com/user/khanacademy'

Simple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X