10
1

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.

Pythonでドメイン(eTLD、eTLD+1)を抽出する方法

Posted at

はじめに

一般的にURL内に含まれるドメインにはeTLDeTLD+1などの種類があり、これらはロジックなどで判定することが難しく、ライブラリなどを用いて抽出することが多い。今回はPythonでeTLDeTLD+1を抽出するためのライブラリpublicsuffix2の簡単な使い方を紹介する。

参考文献

eTLD、eTLD+1とは

Publicsuffix2

public suffixとは

public suffixは、eTLDの別名で用いられる用語で、comco.jpなど実質的にTLDのように機能するドメインを指す。

TLD内のサブドメイン構造はTLDごとに異なるので、機械的にeTLDを決めることが難しく、Public Suffix List (PSL) としてeTLDの一覧表が管理されている。

このPSLを用いてeTLDeTLD+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が取得可能

たったこれだけでeTLDeTLD+1が簡単に取得できる。

※ライブラリ内にはget_public_suffixという関数も存在するが、これはget_sld関数と全く一緒なので、どちらを使用しても良い。

まとめ

一概にドメインといってもeTLDeTLD+1などの種類があり、これらを機械的に判断するのは難しいが、Publicsuffix2を使用することで簡単に抽出できた。

10
1
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
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?