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

前端 未结 4 1062
旧时难觅i
旧时难觅i 2020-12-10 10:20

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

相关标签:
4条回答
  • 2020-12-10 10:40

    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 http://example.com/file.jpg, https://example.com/file.jpg and //example.com/file.jpg are absolute urls but in last case we get scheme = ''

    I use this code:

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

    0 讨论(0)
  • 2020-12-10 10:42

    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('http://www.example.com/some/path')
    True
    >>> is_absolute('//www.example.com/some/path')
    True
    >>> is_absolute('/some/path')
    False
    

    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)
    
    0 讨论(0)
  • 2020-12-10 11:00

    Not sure what you're asking about. Are you just looking to see if it begins with http:// ? IF so, a simple regex will do the trick.

    (EDIT: See comment below -- a very good point!!)

    0 讨论(0)
  • 2020-12-10 11:01

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

    >>> from urlparse import urljoin
    >>> urljoin('http://example.com/', 'http://example.com/picture.png')
    'http://example.com/picture.png'
    >>> urljoin('http://example1.com/', '/picture.png')
    'http://example1.com/picture.png'
    >>> 
    
    0 讨论(0)
提交回复
热议问题