PC引っ越し・ゲーム移行ならToDo PCTrans Free

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

 

  ちなみに、URLに「tipstour.net:8080」というような形でポート番号も記載されている場合、このままポート番号も含んだ文字列が出力されます。

ポート番号を除外してドメインのみ取り出したい場合は、.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ライブラリをガンガン活用しましょう!

いずれも文字列でシンプルに出力してくれるので、使い勝手の良いライブラリだと思います。

 

以上、ご参考までに!

それでは!