从一个域名里面提取主域名,初想起来,貌似很简单,不就是数点[.]的个数吗?取最后一个点前后的字符串,那 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文件拷贝出来,离线使用。

怎么用Python提取域名中的主域名的更多相关文章

  1. 使用 python 提取照片中的手机信息

    使用 python 提取照片中的手机信息 最近在做一个项目,有一个很重要的点是需要获取使用用户的手机信息,这里我选择从照片中获取信息.有人会问为什么不从手机里面直接获取设备信息.由于现在android ...

  2. python提取mysql中指定列参数,并循环打印

    试验环境: Python 3.7.0 Mysql 5.0 实验目的: 使用python将数据库中指定的列中的数值取出来,并循环遍历,用以当成参数传递给需要它的方法. 本次实验取的是para列的数据 实 ...

  3. python 提取目录中特定类型的文件

    python使用‘os’和‘re’模块提取目录中特定类型的文件,这两个模都是安装python自带的,所以不需要安装. 思路: 使用os库lilstdir获取文件夹中的所有文件名,然后带上文件夹路径组合 ...

  4. python提取文件中的方法名称

    #提取文件中的方法名称 # -*- coding:utf-8 -*- def Query_Method(filepath): file = open(filepath,'r',encoding= 'U ...

  5. python 提取字符串中的指定字符 正则表达式

    例1: 字符串: '湖南省长沙市岳麓区麓山南路麓山门' 提取:湖南,长沙 在不用正则表达式的情况下: address = '湖南省长沙市岳麓区麓山南路麓山门' address1 = address.s ...

  6. python 提取字符串中的数字组成新的字符串

    方法一 # 有一个字符串text = "aAsmr3idd4bgs7Dlsf9eAF" # 请将text字符串中的数字取出,并输出成一个新的字符串 import re text = ...

  7. Python:提取网页中的电子邮箱

    import requests, re #regex = r"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)"#这个正则表达式过滤 ...

  8. java 解析URL里的主域名及参数工具类

    java 解析URL里的协议及参数工具类,解析URL中的主域名,并统一把协议修改成http或去掉协议 public class UrlDomainUtils { private static fina ...

  9. apache服务器主域名跳转www域名

    为集中网站权重,有时候我们需要把www域名跳转到主域名,或者主域名跳转到www域名. apache服务器如何实现主域名跳转www域名: 打开网站根目录下.htaccess文件,没有的话新建一个上传至网 ...

随机推荐

  1. Delphi TreeView – 自动展开树形结构

    Delphi TreeView – 自动展开树形结构 当处理完TreeView控件树形结构的数据后,需要默认自动全部展开,可以用到TreeView的Expanded属性. 1 2 3 4 5 6 7 ...

  2. vertical-align 使用参考

    在实现文字与图片垂直对齐的时候,发现了vertical-align的值也是很纷繁复杂,博客讲解各种不懂,最终还是找了CSS权威指南-中文第三版,看了前6章,终于弄明白了,如果你也有不懂的地方,请去看书 ...

  3. 教程less

    http://lesscss.cn/features/ Overview As an extension to CSS, Less is not only backwards compatible w ...

  4. 170220、maven国内镜像 阿里云

    maven确实是一个好东西,但是在国内下载官方仓库的jar却是个大问题,速度不敢恭维,现在oschina的国内maven镜像服务已关闭,无奈之下只能另寻门路. 今天突然发现了阿里云maven国内镜像, ...

  5. 创建TPL自定义模板

    文件布局 <!--1d7c7a527b6335cc7a623305ca940e1findex.tpl.html--> <!DOCTYPE html PUBLIC "-//W ...

  6. 解决scrapy fetch http://www.csdn.net ModuleNotFoundError No module named 'win32api'和ImportError DLL load failed找不到指定的模块

    1.解决scrapy fetch http://www.csdn.netModuleNotFoundError No module named 'win32api' Python是没有自带访问wind ...

  7. Advanced Bash-Scripting Guide(学习笔记)

    http://www.tldp.org/LDP/abs/html/index.html       11.1. Loops tp://www.tldp.org/LDP/abs/html/loops1. ...

  8. IO流入门-第三章-FileInputStream_FileOutputStream复制

    利用FileInputStream和FileOutputStreamj进行复制粘贴 /* 文件复制粘贴 */ import java.io.*; public class FileInput_Outp ...

  9. 2.2 - ATM+购物商城程序

    要求:模拟实现一个ATM + 购物商城程序1.额度 15000或自定义2.实现购物商城,买东西加入 购物车,调用信用卡接口结账3.可以提现,手续费5%4.支持多账户登录5.支持账户间转账6.记录每月日 ...

  10. 协程+IO切换实现并发

    from gevent import monkey # 以后代码中遇到IO都会自动执行greenlet的switch进行切换 monkey.patch_all() import requests im ...