時折、「%」が含まれたURLを扱うことがあります。
例えば、Wikipediaがそうで、「https://ja.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B」と、日本語の部分が「%」付きで変換されています。
この「%」の部分を人間が読むためにはどうしたら良いのか?
Pythonで変換する方法をまとめます。
「%」の付いているURLの正体は?
パーセントエンコーディング(percent encoding)と、呼ばれるもので、URLに使えない文字列を使うための変換手法です。
一般的には「URLエンコーディング」とも呼ばれるそうです。
Pythonで変換するには?
標準ライブラリ「urllib」の「parse」を使います。
import urllib.parse
「%」付きURLを読めるように変換するには?
「urllib.parse.unquote()」を使います。
import urllib.parse
print(urllib.parse.unquote('https://ja.wikipedia.org/wiki/%E5%B0%86%E6%A3%8B'))
# ⇒ https://ja.wikipedia.org/wiki/将棋
日本語を「%」付きURLに変換するには?
「urllib.parse.quote()」を使います。
デフォルトの設定では「:(コロン)」も変換されてしまうので、引数「safe」に「':/'」を指定します。
import urllib.parse
print(urllib.parse.quote('https://オンライン将棋教室・香.com/'))
# ⇒ https%3A//%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%B0%86%E6%A3%8B%E6%95%99%E5%AE%A4%E3%83%BB%E9%A6%99.com/
# 「:(コロン)」までパーセントエンコーディングされてしまう
print(urllib.parse.quote('https://オンライン将棋教室・香.com/',safe=':/'))
# ⇒ https://%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%B0%86%E6%A3%8B%E6%95%99%E5%AE%A4%E3%83%BB%E9%A6%99.com/
# 「safe」に「:(コロン)」と「/(スラッシュ)」を指定するとブラウザで読み込めるURLに変換される
公式ドキュメントへのリンク
詳しくは公式ドキュメントをご覧ください。
https://docs.python.org/ja/3/library/urllib.parse.html#module-urllib.parse
まとめ
パーセントエンコーディングされたURLをPythonで変換するには、標準ライブラリ「urllib」を使えば良いです。
最初は自分で変換コードを作らなくちゃと思っていたので、先人にただただ感謝しています。