3

我想从格式可能不同的 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 中提取我想要的内容,或者我应该手动执行吗?

4

4 回答 4

8

这有点不重要,因为没有简单的规则来确定什么是有效的公共后缀(站点名称 + 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
于 2013-03-17T12:50:33.323 回答
3

维护了一个 TLD 和 CC TLD的公共列表

此 python 项目读取此列表并将您的 URL 与此列表进行比较。

https://github.com/john-kurkowski/tldextract
于 2013-03-17T13:00:58.877 回答
1

这时候我看到有六个包在做域名拆分:

它们在缓存公共后缀列表数据的方式(只有 tldextract 使用 JSON 文件,因此在加载时不会解析列表)、用于下载该数据的策略以及它们在内存中保存的结构(分别为:frozenset , set, set, dictionaries of labels, ditto, dictionary of names) 决定搜索算法。

于 2017-10-27T08:06:48.340 回答
0

使用 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'
于 2013-12-10T09:07:47.333 回答