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