zoukankan      html  css  js  c++  java
  • URL组成成分及各部分作用简介及urllib.parse / uri

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

  • 相关阅读:
    为什么要使用虚拟内存?
    iptables系列
    MySQL 加锁处理分析
    血战的浏览器历史
    TCP协议详解
    OAuth 2.0详解
    Redis 和 I/O 多路复用
    Kubernetes的十大使用技巧
    Nginx动态路由的新姿势:使用Go取代lua
    个人博客实现Archives查询小记
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9548142.html
Copyright © 2011-2022 走看看