How can I check if a URL is absolute using Python?


What is the preferred solution for checking if an URL is relative or absolute?

Asked By: Geo



If you want to know if an URL is absolute or relative in order to join it with a base URL, I usually do urllib.parse.urljoin anyway:

>>> from urllib.parse import urljoin
>>> urljoin('', '')
>>> urljoin('', '/picture.png')
Answered By: warvariuc

Python 2

You can use the urlparse module to parse an URL and then you can check if it’s relative or absolute by checking whether it has the host name set.

>>> import urlparse
>>> def is_absolute(url):
...     return bool(urlparse.urlparse(url).netloc)
>>> is_absolute('')
>>> is_absolute('//')
>>> is_absolute('/some/path')

Python 3

urlparse has been moved to urllib.parse, so use the following:

from urllib.parse import urlparse

def is_absolute(url):
    return bool(urlparse(url).netloc)

Can’t comment accepted answer, so write this comment as new answer: IMO checking scheme in accepted answer ( bool(urlparse.urlparse(url).scheme) ) is not really good idea because of, and // are absolute urls but in last case we get scheme = ”

I use this code:

is_absolute = True if '//' in my_url else False

Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.