python urllib庫,pythonurllib

來源:互聯網
上載者:User

python urllib庫,pythonurllib
python2和python3中的urllib

urllib提供了一個進階的 Web 通訊庫,支援基本的 Web 協議,如 HTTP、FTP 和 Gopher 協議,同時也支援對本地檔案的訪問。

具體來說,urllib 模組的功能是利用前面介紹的協議來從網際網路、區域網路、本地主機上下載資料。

使用這個模組就無須用到 httplib、ftplib和 gopherlib 這些模組了,除非需要用到更低層的功能。

Python 2 中有 urlib、urlparse、urllib2,以及其他內容。在 Python 3 中,所有這些相關模組都整合進了一個名為 urllib 的單一包中。

urlib 和 urlib2 中的內容整合進了 urlib.request模組中,urlparse 整合進了 urllib.parse 中。

Python 3 中的 urlib 包還包括 response、error 和robotparse 這些子模組。

 

URL的格式

prot_sch://net_loc/path;params?query#frag

URL的各個部分(Web地址的各個組件)

prot_sch                           網路通訊協定或下載方案net_loc                            伺服器所在地(也含有使用者資訊)path                               使用斜杠(/)分割的檔案或CGI應用的路徑params                             選擇性參數query                              串連符(&)分割的一系列索引值對frag                               指定文檔內特定錨的部分net_loc 可以進一步拆分成多個組件,一些是必備的,另一些是可選的:user:passwd@host:portuser                               使用者名稱或登入passwd                             使用者密碼host                               運行web伺服器的電腦名稱或地址(必須的)port                               連接埠號碼(如果不是預設的80)

 

urllib.parse模組在python2中叫做urlparse,在python3中已經改名為urllib.parse

urllib.parse 模組提供了一些準系統,用於處理 URL 字串。這些功能包括 urlparse()、urlunparse()和 urljoin()。

 

urlparse()將 urlstr 解析成一個 6 元組(prot_sch, net_loc, path, params, query, frag):

文法:urlparse(urlstr, defProtSch=None, allowFrag=None)>>> urllib.parse.urlparse("https://www.smelond.com?cat=6")ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='cat=6', fragment='')

 

urlunparse()的功能與 urlpase()完全相反,其將經 urlparse()處理的 URL 產生 urltup 這個 6元組(prot_sch, net_loc, path, params, query, frag),拼接成 URL 並返回:

文法:urlunparse(urltup)>>> result = urllib.parse.urlparse("https://www.smelond.com")>>> print(result)ParseResult(scheme='https', netloc='www.smelond.com', path='', params='', query='', fragment='')>>> urllib.parse.urlunparse(result)'https://www.smelond.com'

 

在需要處理多個相關的 URL 時我們就需要使用 urljoin()的功能了,例如,一個 Web 頁中可能會產生一系列頁面 URL:

urljoin()取得根網域名稱,並將其根路徑(net_loc 及其前面的完整路徑,但是不包括末端的檔案)與 newurl 串連起來。

文法:urljoin (baseurl, newurl, allowFrag=None)>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","?cat=7")'https://www.smelond.com?cat=7'>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","abc")'https://www.smelond.com/abc'>>> urllib.parse.urljoin("https://www.smelond.com?cat=6","/test/abc.html")'https://www.smelond.com/test/abc.html'>>> urllib.parse.urljoin("https://www.smelond.com","abc.html")'https://www.smelond.com/abc.html'

 

urllib.parse 模組中的核心函數描述

urlparse(urlstr,defProSch=None,allowFrag=None)            將urlstr解析成各個組件,如果在urlstr中沒有給定協議或方案,則使用defProtSch;allowFrag 決定是否允許有 URL 片段urlunparse(urltup)                                        將 URL 資料(urltup)的一個元組拼成一個 URL 字串urljoin(baseurl, newurl, allowFrag=None)                  將 URL 的根網域名稱和 newurl 拼合成一個完整的 URL;allowFrag 的作用和urlpase()相同

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.