How to join absolute and relative urls? How to join absolute and relative urls? python python

How to join absolute and relative urls?


You should use urlparse.urljoin :

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

With Python 3 (where urlparse is renamed to urllib.parse) you could use it as follow:

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


If your relative path consists of multiple parts, you have to join them separately, since urljoin would replace the relative path, not join it. The easiest way to do that is to use 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'

See also: How to join components of a path when you are constructing a URL in Python


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