不使用库,自己可以利用正则表达式实现解析域名各部分参数:协议、域名、端口、路径、载荷等。
使用的正则表达式如下:
r'''(?x)\A ([a-z][a-z0-9+\-.]*):// # Scheme ([a-z0-9\-._~%]+ # IPv4 host |\[[a-z0-9\-._~%!$&'()*+,;=:]+\]) # IPv6 host (:[0-9]+)? # Port number ([a-zA-Z0-9\-\/._~%!$&'()*+]+)? # path (\?[a-zA-Z0-9&=]+)? # query '''
例如,对于"https://www.baidu.com/xxx/xxx?s=xxx"网址,解析出来各部分为:
('https', 'www.baidu.com', None, '/xxx/xxx', '?s=xxx')