はじめに
一般的にURL内に含まれるドメインにはeTLD
やeTLD+1
などの種類があり、これらはロジックなどで判定することが難しく、ライブラリなどを用いて抽出することが多い。今回はPythonでeTLD
やeTLD+1
を抽出するためのライブラリpublicsuffix2
の簡単な使い方を紹介する。
参考文献
eTLD、eTLD+1とは
Publicsuffix2
public suffixとは
public suffix
は、eTLD
の別名で用いられる用語で、com
やco.jp
など実質的にTLD
のように機能するドメインを指す。
TLD
内のサブドメイン構造はTLD
ごとに異なるので、機械的にeTLD
を決めることが難しく、Public Suffix List (PSL)
としてeTLD
の一覧表が管理されている。
このPSLを用いてeTLD
やeTLD+1
を抽出するためのライブラリがPublicsuffix2
である。
インストール方法
pip install
でインストールできる。
pip install publicsuffix2
基本的な使い方
from publicsuffix2 import fetch, get_sld, get_tld
domain_a = 'sample.example.co.jp'
domain_b = 'test.example.com'
psl_file = fetch()
print(get_tld(domain_a, psl_file=psl_file)) # co.jp
print(get_tld(domain_b, psl_file=psl_file)) # com
print(get_sld(domain_a, psl_file=psl_file)) # example.co.jp
print(get_sld(domain_b, psl_file=psl_file)) # example.com
抑えておくべきは以下の3点
-
fetch
関数で最新のPSLリストを取得する -
get_tld
関数でeTLD
が取得可能 -
get_sld
関数でeTLD+1
が取得可能
たったこれだけでeTLD
、eTLD+1
が簡単に取得できる。
※ライブラリ内にはget_public_suffix
という関数も存在するが、これはget_sld
関数と全く一緒なので、どちらを使用しても良い。
まとめ
一概にドメインといってもeTLD
やeTLD+1
などの種類があり、これらを機械的に判断するのは難しいが、Publicsuffix2
を使用することで簡単に抽出できた。