PythonでちょいとばかりURLを弄る必要があったのでメモ。
あるいは、urlparseモジュールで遊んでみたとも言えよう。
まあ、話は簡単でこんなURLがあるとしますぜ。
http://www.sample.co.jp/apps/view?lang=ja&code=utf-8&id=123#top
こいつをこんな感じにパースしたいと。
www.sample.co.jp, /apps/view, lang=ja%code=utf-8%id=123, top
イメージできた?
難しく言うと、ホスト部とパス部、パラメータ群、HTMLで言うところの#hogehogeのあれ、にそれぞれ分割したい。
さっそくgoogle様に教えを請うたところ、urlparseモジュールを使いなさいと。
ふむ、ではいじってみましょう。
$ python
>> import urlparse
>>> parse_url = urlparse.urlparse('http://www.sample.co.jp/apps/view?lang=ja&code=utf-8&id
=123#top')
>>> parse_url
ParseResult(scheme='http', netloc='www.sample.co.jp', path='/apps/view', params='', query='lang=ja&code=utf-8&id=123', fragment='top')
>>> parse_url.netloc
'www.sample.co.jp'
>>> parse_url.path
'/apps/view'
>>> parse_url.query
'lang=ja&code=utf-8&id=123'
>>> parse_url.fragment
'top'
何だあっさりと出来ちまったぜ。さすがPython、恐るべし。
ここまで来るとURLにくっついてきているパラメータもパースしたいですね。
>>> urlparse.parse_qsl(parse_url.query)
[('lang', 'ja'), ('code', 'utf-8'), ('id', '123')]
これまたurlparseモジュールでできちゃったよ。
タプルは扱いづらいよぅ、せめてdictに。という場合はdict()にぶち込めばいい。
>>> dict(urlparse.parse_qsl(parse_url.query))
{'lang': 'ja', 'code': 'utf-8', 'id': '123'}