2022-02-10に投稿

Python 標準ライブラリ urllib.parse URLの解析

標準ライブラリurllib.parseには、URLの解析をするための関数が用意されている。

URLの解析

import urllib.parse

url = urllib.parse.urlparse('http://www.example.jp:80/test/path?q=some value&r=http://[email protected]/&search=a+b,c;$')
# => ParseResult(scheme='http', netloc='www.example.jp:80', path='/test/path', params='', query='q=some value&r=http://[email protected]/&search=a+b,c;$', fragment='')

urllib.parse.urlsplit('http://www.example.jp:80/test/path?q=some value&r=http://[email protected]/&search=a+b,c;$')
# => SplitResult(scheme='http', netloc='www.example.jp:80', path='/test/path', query='q=some value&r=http://[email protected]/&search=a+b,c;$', fragment='')

URLクエリーの解析

urllib.parse.parse_qs('key1=value1&key2=&test%3Da%26da%20a a=xyz')
# => {'key1': ['value1'], 'test=a&da a a': ['xyz']}

urllib.parse.parse_qs('key1=value1&key2=&test%3Da%26da%20a a=xyz', keep_blank_values=True)
# => {'key1': ['value1'], 'key2': [''], 'test=a&da a a': ['xyz']}

urllib.parse.parse_qsl('key1=value1&key2=&test%3Da%26da%20a a=xyz')
# => [('key1', 'value1'), ('test=a&da a a', 'xyz')]

urllib.parse.parse_qsl('key1=value1&key2=&test%3Da%26da%20a a=xyz', keep_blank_values=True)
# => [('key1', 'value1'), ('key2', ''), ('test=a&da a a', 'xyz')]

URLの要素からURLを組み立てる

urllib.parse.urlunparse(('http', 'www.example.jp:80', '/test/path', '', 'q=some value&r=http://user@ex
# => 'http://www.example.jp:80/test/path?q=some value&r=http://[email protected]/&search=a+b,c;$'

urllib.parse.urlunsplit(('http', 'www.example.jp:80', '/test/path', '', 'q=some value&r=http://[email protected]/&search=a+b,c;$'))
# => 'http://www.example.jp:80/test/path#q=some value&r=http://[email protected]/&search=a+b,c;$'

URLの結合

urllib.parse.urljoin('https://www.example.jp/a/b/c.txt','/x/y.txt')
# => 'https://www.example.jp/x/y.txt'

urllib.parse.urljoin('https://www.example.jp/a/b/c.txt','x/y.txt')
# => 'https://www.example.jp/a/b/x/y.txt'

辞書からクエリーパラメータを構成

data = {}
data['key1'] = 'value1'
data['key2'] = 'value2'

urllib.parse.urlencode(data) # => key1=value1&key2=value2

参考

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント