我想从格式可能不同的 URL 列表中提取域名(站点名称+TLD)。例如:当前状态---->我想要什么
mail.yahoo.com------> yahoo.com
account.hotmail.co.uk---->hotmail.co.uk
x.it--->x.it
google.mail.com---> google.com
是否有任何 python 代码可以帮助我从 URL 中提取我想要的内容,或者我应该手动执行吗?
我想从格式可能不同的 URL 列表中提取域名(站点名称+TLD)。例如:当前状态---->我想要什么
mail.yahoo.com------> yahoo.com
account.hotmail.co.uk---->hotmail.co.uk
x.it--->x.it
google.mail.com---> google.com
是否有任何 python 代码可以帮助我从 URL 中提取我想要的内容,或者我应该手动执行吗?
这有点不重要,因为没有简单的规则来确定什么是有效的公共后缀(站点名称 + TLD)。相反,构成公共后缀的内容在 PublicSuffix.org 上作为列表进行维护。
存在一个查询该列表(本地存储)的python包;它被称为publicsuffix
:
>>> from publicsuffix import PublicSuffixList
>>> psl = PublicSuffixList()
>>> print psl.get_public_suffix('mail.yahoo.com')
yahoo.com
>>> print psl.get_public_suffix('account.hotmail.co.uk')
hotmail.co.uk
维护了一个 TLD 和 CC TLD的公共列表。
此 python 项目读取此列表并将您的 URL 与此列表进行比较。
https://github.com/john-kurkowski/tldextract
这时候我看到有六个包在做域名拆分:
它们在缓存公共后缀列表数据的方式(只有 tldextract 使用 JSON 文件,因此在加载时不会解析列表)、用于下载该数据的策略以及它们在内存中保存的结构(分别为:frozenset , set, set, dictionaries of labels, ditto, dictionary of names) 决定搜索算法。
使用 python 顶级域名
https://pypi.python.org/pypi/tld
$ pip 安装顶级域名
from tld import get_tld
print get_tld("http://www.google.co.uk/some-page/some-sub-page/")
'google.co.uk'