怎么用Python提取域名中的主域名


从一个域名里面提取主域名,初想起来,貌似很简单,不就是数点[.]的个数吗?取最后一个点前后的字符串,那 abc.txt 是域名吗?那再加个验证,加上国家码,.com,.cn,.org结尾的才算,那这个域名呢(www.freelancer.co.ro),它的主域名到底是freelancer.co.ro呢,还是co.ro?

 

还好,Python从不缺少第三方库,有贡献者已经帮我们造好了轮子tldextract(https://github.com/john-kurkowski/tldextract)。

 

安装

pip install tldextract

 

示例

>>> import tldextract

>>> val = tldextract.extract("https://www.ymw.cn/")

>>> val

ExtractResult(subdomain='www', domain='ymw', suffix='cn')

>>> "{0}.{1}".format(val.domain, val.suffix) #主域名

'ymw.cn'

>>> tldextract.extract("aa.txt")

ExtractResult(subdomain='aa', domain='txt', suffix='')

>>> #后缀为空,不是域名

>>>

 

02

再探一步

如果只是简单使用,上面的代码已经足以,我们再稍稍前进一步。

第一次提取主域名的时候,此包会访问域名后缀网站(https://publicsuffix.org/list/public_suffix_list.dat),生成一个域名后缀集合(.td_set,["ac", "com.ac", "edu.ac", "gov.ac", ... , "zip", "zippo", "zone", "zuerich"] ),有了这个集合,我们就可以定期更新,离线安装使用了。

 

离线使用

将.tld_set文件拷贝出来,离线使用。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM