URLからドメイン名を抽出する

urlparse URLをパースする

仕事でURLのリストをドメインごとに集計するために使った方法を紹介します。以下のプログラムは、指定されたURLについて標準モジュールのurlparseを使用した後、フォーマットすることによりhttp://xxxxx.comのような形式に変形した文字列を出力します。例えば、社内から外部へのアクセスログを集計する場合なんかに使えると思います。

from urllib.parse import urlparse

# 解析対象URL 
access_url = 'http://www.python.ambitious-engineer.com/archives/?s=hoge&x=0&y=0'

# URLをパースする
parsed_url = urlparse(access_url)

# URLスキーマ
print(parsed_url.scheme) # http

# ネットワーク上の位置(≒ドメイン)を取得する
print(parsed_url.netloc) # www.python.ambitious-engineer.com

# 階層パス
print(parsed_url.path) # /archives/


# クエリ要素 
print(parsed_url.query) # s=hoge&x=0&y=0

# フォーマットする 
url = '{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(access_url))
print(url) # http://www.python.ambitious-engineer.com/