URL組成成分及各部分做用簡介及urllib.parse / uri

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

相關文章
相關標籤/搜索