URI(Uniform Resource Identifier)和 URL(Uniform Resource Locator)都是用于标识互联网资源的字符串。但它们有以下区别:
URI:
- URI是抽象标识符,用于标识某个资源。它不包含资源如何获取或其网络位置的信息。
- URI的语法十分广泛,可以使用多种 schemes来标识资源,如mailto、tel等。
- URI可能需要额外信息才能获取对应的资源,如相对URI需要基准URI。
URL:
- URL是具体的URI,用于标识网络资源(如网页)及其获取位置。它指明了资源的获取方式(scheme)和网络位置(host)。
- URL的scheme通常是http、https、ftp等,用于指明使用相应协议访问资源。
- URL是自包含的,可以直接用于获取网络资源,无需额外信息。
- 每个URL都是一个URI,但不是每个URI都是URL。
代码示例:
python
# URL例子
url = 'https://www.itzhimei.com/test.html'
# 分解URL
scheme = url[:8] # https
host = url[8:24] # www.example.com
path = url[24:] # /test.html
# URI例子
uri = 'mailto:test@example.com'
uri = '/test.html' # 相对URI,需要基准URI
# 判断URL
def is_url(string):
try:
result = urlparse(string)
return all([result.scheme, result.netloc])
except ValueError:
return False