URL与每一个使用网络的人密切相关,尤其对于web开发人员,它被设计为供人类和计算机使用,双重目的产生了两种规范的表示形式:URI和IRI
举一个简单的例子,下面两个url完全是等价的
http://127.0.0.1/?name=小明
http://127.0.0.1/?name=%E5%B0%8F%E6%98%8E
第一个url适合人类理解,第二个url适合计算机理解和使用,第一个url经过url编码所得到的正是第二个url,对于url解析和编码,python提供了标准库,但用过的人都知道,使用起来并不是那么方便。
hyperlink,在url解析和构造方面提供了非常优秀的体验,简直不要太人性化。
from hyperlink import URL
url = "http://127.0.0.1/?name=小明"
url = URL.from_text(url)
print(url.to_uri().to_text())
url = 'http://127.0.0.1/?name=%E5%B0%8F%E6%98%8E'
url = URL.from_text(url)
print(url.to_iri().to_text())
RUI和IRI两种规范的url之间,可以自由转换
from hyperlink import URL
url = "http://127.0.0.1/?name=小明#nose"
url = URL.from_text(url)
print(url.scheme) # 协议
print(url.host) # 主机
print(url.port) # 端口
print(url.path) # path
print(url.query) # 请求参数
print(url.get('name'))
print(url.fragment) # 片段
from hyperlink import URL
url = "http://127.0.0.1/"
url = URL.from_text(url)
print(url.click('login').to_text()) # http://127.0.0.1/login
print(url.replace(scheme='https').to_text()) # https://127.0.0.1:80/
print(url.replace(query={'name': '小明'})) # http://127.0.0.1/?name=小明
click可以将一段新的path拼接到原有的url上,replace可以替换url的任意一个组成部分。
虽然hyperlink提供的功能都非常简单,但是却很实用,相比于python提供的标准库,更加pythonic。
QQ交流群: 211426309