はじめに
一般的に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を使用することで簡単に抽出できた。