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'}