2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

urlparseのnetlocはホスト名じゃない

Last updated at Posted at 2022-01-03

URLからホスト名を取得したい

調べたらurllib.parse.urlparseが使えるとのこと

from urllib.parse import urlparse

r = urlparse("https://www.example.com/hogehoge.html")

print(r.netloc) # >>> www.example.com

urlparseにURLを入れてそれのnetloc属性がホスト名を持つらしい
普通に使う分にはこれで事足りました

しかし、とある要素が入ると動かなくなる

何故かこの場合の動作がおかしくなります

from urllib.parse import urlparse

r = urlparse("https://localhost:8000")

print(r.netloc) # >>> localhost:8000

いや、お前(ポート番号)何でついて来るんだ

何でなんでしょう

とりあえずこう書いてみた

from urllib.parse import urlparse

r = urlparse("https://localhost:8000")

print(r.netloc.split(":", 1)[0]) # >>> localhost

はい、わざわざ:で分割してるあたり気持ち悪いですね

解決策

urlparseのドキュメントに凸ったら「hostname」といういかにもそれらしき属性を発見しました

from urllib.parse import urlparse

r1 = urlparse("https://www.example.com/hogehoge.html")

print(r1.hostname) # >>> www.example.com

r2 = urlparse("https://localhost:8000")

print(r2.hostname) # >>> localhost

勝ちましたね

それにしてもnetlocって何の意味があるんでしょうね
調べるとurlparseのnetloc属性=ホスト名だといった記事がたくさんヒットするんですが……

謎だ……

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?