开发者社区> 桃子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

python 提取主域名和子域名代码——先根据规则提取,如果有问题,则使用tldextract

简介:
+关注继续查看
复制代码
import tldextract



def extract_domain(domain):
    suffix = {'.com','.la','.io', '.co', '.cn','.info', '.net', '.org','.me', '.mobi', '.us', '.biz', '.xxx', '.ca', '.co.jp', '.com.cn', '.net.cn', '.org.cn', '.mx','.tv', '.ws', '.ag', '.com.ag', '.net.ag', '.org.ag','.am','.asia', '.at', '.be', '.com.br', '.net.br', '.name', '.live', '.news', '.bz', '.tech', '.pub', '.wang', '.space', '.top', '.xin', '.social', '.date', '.site', '.red', '.studio', '.link', '.online', '.help', '.kr', '.club', '.com.bz', '.net.bz', '.cc', '.band', '.market', '.com.co', '.net.co', '.nom.co', '.lawyer', '.de', '.es', '.com.es', '.nom.es', '.org.es', '.eu', '.wiki', '.design', '.software', '.fm', '.fr', '.gs', '.in', '.co.in', '.firm.in', '.gen.in', '.ind.in', '.net.in', '.org.in', '.it', '.jobs', '.jp', '.ms', '.com.mx', '.nl','.nu','.co.nz','.net.nz', '.org.nz', '.se', '.tc', '.tk', '.tw', '.com.tw', '.idv.tw', '.org.tw', '.hk', '.co.uk', '.me.uk', '.org.uk', '.vg'}

    domain = domain.lower()
    names = domain.split(".")
    if len(names) >= 3:
        if ("."+".".join(names[-2:])) in suffix:
            return ".".join(names[-3:]), ".".join(names[:-3])
        elif ("."+names[-1]) in suffix:
            return ".".join(names[-2:]), ".".join(names[:-2])
    print "New domain suffix found. Use tld extract domain..."

    pos = domain.rfind("/")
    if pos >= 0: # maybe subdomain contains /, for dns tunnel tool
        ext = tldextract.extract(domain[pos+1:])
        subdomain = domain[:pos+1] + ext.subdomain
    else:
        ext = tldextract.extract(domain)
        subdomain = ext.subdomain
    if ext.suffix:
        mdomain = ext.domain + "." + ext.suffix
    else:
        mdomain = ext.domain
    return mdomain, subdomain

print extract_domain("baidu.com")  == ("baidu.com", "")
print extract_domain("www.baidu.com") == ("baidu.com", "www")
print extract_domain("www.xx.com.cn") == ("xx.com.cn", "www")
print extract_domain("www.xxx.gov.cn") == ("gov.cn", "www.xxx")
print extract_domain("abc.www.xxx.net.co") == ("xxx.net.co", "abc.www")
print extract_domain("abcwwwxxx.local") == ("local", "abcwwwxxx")
print extract_domain("abcwwwxxxlocal") == ("abcwwwxxxlocal", "")
print extract_domain("attack/www.baidu.com") == ("baidu.com", "attack/www")
print extract_domain("xx.attack/xxx.baidu.com") == ("baidu.com", "xx.attack/xxx")
print extract_domain("attack/xxx.baidu.com") == ("baidu.com", "attack/xxx")
print extract_domain("xxx.baidu.new_suffix") == ("new_suffix", "xxx.baidu")
print extract_domain("attack/xxx.baidu.new_suffix") == ("new_suffix", "attack/xxx.baidu")
                                                                                       
复制代码

 















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7886296.html,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
(5)ESP32+Python使用Socket传输播放Bad Apple
ESP32+Python使用Socket传输播放Bad Apple
113 0
Python:retrying重试装饰器的使用
Python:retrying重试装饰器的使用
41 0
[雪峰磁针石博客]使用jython进行dubbo接口及ngrinder性能测试
快速入门(接口测试) 确认mvn和jdk、jython安装ok。 先下载dubbo的demo,编译运行demo。 # git clone https://github.com/alibaba/dubbo.
1779 0
Kotlin导出可执行的程序
一、在用Kotlin写完程序后,怎么导出使他成为可执行的程序。 首先需要添加两行代码 /**添加两行代码,指出导出的是程序*/ apply plugin: 'application' //尽管包名为Counter.
1041 0
使用Python检测并绕过Web应用程序防火墙
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396273 参考文章:click here Web应用程序防火墙用来过滤恶意流量。
1342 0
【Python成为高收入国家增长最快的语言】开发者生态系统十大语言
本文根据Stack Overflow流量分析了Python及其他一些编程语言的发展情况,同时也对高收入国家与非高收入国家的情况进行了对比。英文原文来自stackoverflow.blog,以下是译文。
2010 0
4267
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载