URL组成成分及各部分作用简介及urllib.parse / uri

时间:2023-12-26 19:09:19

URL的一般格式为(带方括号[]的为可选项):

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 urlparse

>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')

>>> o

ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',

params='', query='', fragment='')

被解析的url对象具有只读属性:scheme,netloc,path,params,query,fragment,username,password,hostname,port

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,给定了明确的地址。