我試圖將網址拆分爲多個部分,以便我可以單獨使用這些網址。將整個網址分解成部分
例如,的網址:
'https://api.somedomain.co.uk/api/addresses?postcode=XXSDF&houseNo=34'
如何可以分成這樣: 1)源極/原點(即協議+子域+結構域) 2)路徑 '/ API /地址' 3)的查詢:「 ?郵編= XXSDF &的HouseNo = 34'
我試圖將網址拆分爲多個部分,以便我可以單獨使用這些網址。將整個網址分解成部分
例如,的網址:
'https://api.somedomain.co.uk/api/addresses?postcode=XXSDF&houseNo=34'
如何可以分成這樣: 1)源極/原點(即協議+子域+結構域) 2)路徑 '/ API /地址' 3)的查詢:「 ?郵編= XXSDF &的HouseNo = 34'
的urlparse
庫,在Python3在urllib
發現,是專爲這一點。改編自documentation例如:
>>> from urllib.parse import urlparse
>>> o = urlparse('https://api.somedomain.co.uk/api/addresses?postcode=XXSDF&houseNo=34')
>>> o
ParseResult(scheme='https', netloc='api.somedomain.co.uk', path='/api/addresses', params='', query='postcode=XXSDF&houseNo=34', fragment='')
>>> o.scheme
'http'
>>> o.port
None
>>> o.geturl()
'https://api.somedomain.co.uk/api/addresses?postcode=XXSDF&houseNo=34'
爲了獲取主機,路徑和查詢,API是簡單明瞭:
>>> print(o.hostname, o.path, o.query)
返回:
api.somedomain.co.uk /api/addresses postcode=XXSDF&houseNo=34
爲了得到子域本身,the only way seems to split by .
。
注意,urllib.parse.urlsplit
應該使用urlparse
,根據文檔:
這應該通常被用來代替裏urlparse(https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlsplit)如果要施加的更近的URL語法允許參數到URL的路徑部分的每個部分(請參閱RFC 2396)是想要
你可能想在STDLIB模塊urlparse
關於Python 2,或urllib.parse
關於Python 3.將會達到更精細的比你要求拆分URL,但它並不難再次將這些碎片重新放在一起。
你可以使用python的urlparse。
>>> from urlparse 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='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'
謝謝 - 我愛如何python有一個工具的一切。 – Yunti