web-dev-qa-db-fra.com

Comment rejoindre les URL absolues et relatives?

J'ai deux urls:

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

Comment puis-je obtenir une URL absolue pour url2?

85
Bdfy

Vous devriez utiliser rlparse.urljoin :

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

Avec Python 3 (où rlparse est renommé en urllib.parse ) vous pourriez tilisez-le comme suit :

>>> import urllib.parse
>>> urllib.parse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'
180
Cédric Julien
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml']
base = ''
map(lambda e: urlparse.urljoin(base, e), es)
6
Shikhar Mall
>>> from urlparse import urljoin
>>> url1 = "http://www.youtube.com/user/khanacademy"
>>> url2 = "/user/khanacademy"
>>> urljoin(url1, url2)
'http://www.youtube.com/user/khanacademy'

Simple.

4
Talha Ashraf

Si votre chemin relatif est composé de plusieurs parties, vous devez les joindre séparément, car urljoin remplacerait le chemin relatif et 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 des composants d'un chemin lorsque vous construisez une URL en Python

3
pcv

Pour python 3.0+, la méthode correcte pour rejoindre les URL est la suivante:

from urllib.parse import urljoin
urljoin('https://10.66.0.200/', '/api/org')
# output : 'https://10.66.0.200/api/org'
0
srth12