如何从python中的URL获取域名(名称+ TLD)

时间:2013-03-17 12:38:38

标签: python url python-2.7 domain-name

我想从URL列表中提取域名(站点名称+ TLD),这些URL的格式可能不同。 例如:  当前状态---->我想要什么

mail.yahoo.com------> yahoo.com
account.hotmail.co.uk---->hotmail.co.uk
x.it--->x.it
google.mail.com---> google.com

是否有任何python代码可以帮助我从URL中提取我想要的内容,还是应该手动执行?

4 个答案:

答案 0 :(得分:8)

这有点不重要,因为没有简单的规则可以确定什么是有效的公共后缀(网站名称+ TLD)。相反,公共后缀是maintained as a list at 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

答案 1 :(得分:2)

维护了public list TLD和CC TLD。

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

https://github.com/john-kurkowski/tldextract

答案 2 :(得分:0)

使用python tld

https://pypi.python.org/pypi/tld

$ pip install tld

from tld import get_tld
print get_tld("http://www.google.co.uk/some-page/some-sub-page/")
'google.co.uk'

答案 3 :(得分:0)

目前我看到六个包正在进行域名分割:

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