2016-05-23 6 views
-2

URLを分割して別々に処理できるようにしようとしています。完全なURLを部分に分割する

URL:私はにこれを分割することができますどのように

'https://api.somedomain.co.uk/api/addresses?postcode=XXSDF&houseNo=34'

: 1)ソース/起源(すなわちプロトコル+サブドメイン+ドメイン) 2)パス '/ API /アドレス' 3)クエリ ' ?郵便番号= XXSDF & houseNo = 34' あなたはおそらく、Pythonの2のSTDLIBモジュールurlparseをしたい、またはPythonの3のurllib.parse

答えて

1

urlparseライブラリーは、このために設計されています。例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はstraighforwardです:

>>> 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代わりに使用すべきであることに注意してください:

より最近のURL構文はパラメータを適用することが可能ならばこれは、一般的に代わりurlparse(https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlsplit)の使用すべきですURLのパス部分の各セグメント(RFC 2396参照)が必要です

+0

ありがとうございます - 私はpythonがすべてのツールをどのように備えているのが大好きです。 – Yunti

0

これはあなたが求めているよりも、より細かくURLを分割しますが、それはすることは困難ではありませんそれらの部分を再び一緒に置く。

2

あなたはPythonのurlparseを使うことができます。 python3でurllibで見つかった

>>> 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' 
関連する問題