Pythonについて詳しく解説します
PythonでURLを扱う場合、ドメイン部分とそれ以降のフォルダ名・ファイル名のパス部分とを分離して、別々の文字列にしたいということが多々あります。
この記事では、parseurlというライブラリを利用して、URLをドメイン部分とそれ以降の部分に分割する簡単な方法をまとめました。
わざわざ文字列のレベルで細かい処理を行わなくても、非常に簡単に分離出来るので、ぜひこちらを使うようにしましょう!
目次
【コピペでOK】URLの文字列からhttps・ドメイン・それ移行を分離するコード
ということで、以下がそのコードです。
ここでは「https://tipstour.net/office/excel/7101」という、当ブログのとある記事のURLをテスト対象としています。
from urllib.parse import urlparse url = "https://tipstour.net/office/excel/7101" parse = urlparse(url) domain = parse.netloc print(domain) filepath = parse.path print(filepath)
上記をそのまま実行すると、以下の通りに出力されます。
1行目がドメイン部分、2行目がドメイン以降のパス部分ですね。
tipstour.net /office/excel/7101
urlparseライブラリを使うと、指定したURL文字列を解析して、それぞれの部分に分割して出力してくれます。
ドメイン・パス以外にも、httpsなどのプロトコル(スキーマ)部分や、「?」以降のクエリー部分やポート番号など、かなり自由に分割することが可能です。
URLから色々と取り出すなら、このライブラリを使ってしまうのが最も簡単ですね。
【解説①】ドメイン部分を取得するコード
ドメイン部分を取得しているのは以下の部分です。
domain = parse.netloc
パースしたURLに対して.netlocを実行すると、ドメイン部分のみを抜き出し、文字列として出力してくれます。
ドメイン末尾には「/」がないので、必要であれば追記しましょう。
tipstour.net
ポート番号を除外してドメインのみ取り出したい場合は、.hostnameを使うと、ポート番号を除外したドメイン部分のみ出力できますよ。
【解説②】ドメイン以降を取得するコード
ドメイン以降を取得したいならこちら。
filepath = parse.path
パースしたURLに対して.pathを実行すると、ドメイン以降のパス部分のみを抜き出して、文字列として出力します。
/office/excel/7101
この場合、クエリー部分は一緒には出力されません。
クエリー部分を出力したい場合は.queryを使いましょう。
【おまけ】urlparseで取得できるデータ一覧
ということで、URLにはドメインやパス部分以外にもいくつかの項目があるので、urlparseを使って取り出せる、実際に役立ちそうなデータを、最後にまとめておきますね。
コード | 取得できる値 | 例 |
---|---|---|
parse.scheme | スキーマ (プロトコル) | https |
parse.netloc | ドメイン (ポート番号がある場合はそれも含む) | tipstour.net:8080 |
parse.path | ドメイン以降のパス (フォルダ名、ファイル名) | /office/excel/7101 |
parse.query | クエリパラメータ (パスの?以降) | ?category=excel |
parse.port | ポート番号 | 8080 |
parse.hostname | ホスト名 (ポート名を除外したドメイン) | tipstour.net |
まとめ
以上、URLの文字列からドメインとそれ以降を分離する方法でした。
URLを加工・分割するならurlparseライブラリをガンガン活用しましょう!
いずれも文字列でシンプルに出力してくれるので、使い勝手の良いライブラリだと思います。
以上、ご参考までに!
それでは!