URL的通常格式为(带方括号[]的为可选项):html
protocol :// hostname[:port] / path / [;parameters][?query]#fragment安全
urllib.parse.urlparse会把URL解析成6部分 scheme://netloc/path;parameters?query#fragment服务器
urllib.parse.urlparse(urlstring, scheme=”, allow_fragments=True) 返回一个6元素的元组网络
>>> from urllib.parse import urlparseide
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')ui
>>> o url
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',spa
params='', query='', fragment='').net
被解析的url对象具备只读属性:scheme,netloc,path,params,query,fragment,username,password,hostname,portorm
urllib.parse.urlsplit(urlstring, scheme=”, allow_fragments=True) 返回一个5元素的元组
(addressing scheme, network location, path, query, fragment identifier).同urlparse同样,只是把path和params合并成path,不分开了。
urllib.parse.urljoin(base, url, allow_fragments=True)
>>> from urllib.parse import urljoin
>>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
'http://www.cwi.nl/%7Eguido/FAQ.html'
urllib.parse.urldefrag(url) ,以#分割url,返回一个 没有frament的URL 和 frament值 的2元素元组,具备只读属性url和fragment.
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
1.协议部分:该URL的协议部分为“http:”,“//”为分隔符 ,指定使用的传输协议
2.域名部分:该URL的域名部分为“www.aspxfans.com”。hostname存放资源的服务器的域名系统 (DNS) 主机名或 IP 地址。有时,在主机名前也能够包含链接到服务器所需的用户名和密码(格式:username:password)
3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”做为分隔符。若是省略端口部分,将采用默认端口
4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,虚拟目录是一个URL可选部分。本例中的虚拟目录是“/news/”,通常用来表示主机上的一个目录或文件地址
5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,若是没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,若是没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,若是省略该部分,则使用默认的文件名
6.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”,参数与参数之间用“&”做为分隔符每一个参数的名和值用“=”符号隔开。用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制做的网页)传递参数。
7.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。fragment信息片段,字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可以使用fragment直接定位到某一名词解释
协议说明
file 资源是本地计算机上的文件。格式file://
ftp 经过 FTP访问资源。格式 FTP://
gopher 经过 Gopher 协议访问该资源。
http 经过 HTTP 访问该资源。 格式 HTTP://
https 经过安全的 HTTPS 访问该资源。 格式 HTTPS://
mailto 资源为电子邮件地址,经过 SMTP 访问。 格式 mailto:
MMS 经过 支持MMS(流媒体)协议的播放该资源。(表明软件:Windows Media Player)格式 MMS://
ed2k 经过 支持ed2k(专用下载连接)协议的P2P软件访问该资源。(表明软件:电驴) 格式 ed2k://
Flashget 经过 支持Flashget:(专用下载连接)协议的P2P软件访问该资源。(表明软件:快车) 格式 Flashget://
thunder 经过 支持thunder(专用下载连接)协议的P2P软件访问该资源。(表明软件:迅雷) 格式 thunder://
news 经过 NNTP 访问该资源。
tencent 经过支持tencent(专用聊天链接) 协议和用户对话。(表明软件:QQ、TM)格式 tencent://message/?uin=号码&Site=&Menu=yes
msnim 经过支持msnim(专用聊天链接) 协议和用户对话。(表明软件:MSN、WLM) 格式 msnim:chat?contact=邮箱地址
Windows 主机不区分 URL 大小写,可是,Unix/Linux 主机区分大小写。
顺便加一下 url 和 uri 和 urn 吧 原文 http://blog.csdn.net/woshizhangliang999/article/details/51649461
Uniform Resource Identifier 统一资源标志符
Uniform Resource Locator 统一资源定位器
Uniform Resource Name 统一资源名称
identifier包含locator和name,也就是要肯定一个物品,就包含了找到 这个物品的路径 和 这个物品的名字 。
据归纳,locator和Identifier的区别就是 是否有 传输协议(访问机制),由于 对于 相同的域名 不一样的协议 可能定位 到 不一样的资源。
也就是包含了 scheme: 的uri 才能算正规的URL,给定了明确的地址。