如何从URL中快速提取域名?

网络 通信技术
有时候,我们要从一段很长的 URL 里面提取出域名,但如果我给出的 URL 没有带 https://,这段代码的结果就有问题。

有时候,我们要从一段很长的 URL 里面提取出域名。例如从

https://www.kingname.info/2020/10/02/copy-from-ssh/,我需要获取的是kingname.info。

[[348899]]

可能有人会这样写代码:

  1. url = 'https://www.kingname.info/2020/10/02/copy-from-ssh/' 
  2. domain = '.'.join(url.split('/')[2].split('.')[1:]) 

运行效果如下图所示:

但如果我给出的 URL 没有带 https://,这段代码的结果就有问题。

而且,有些域名可能有三级、四级域名,例如:blog.exercise.kingname.com.cn。显然,使用点分割以后,也不知道怎么拿到真正的域名kingname.com.cn。

还有一些人的需求可能只需要域名中的名字,例如kingname.info只要kingname,google.com.hk只要google。

对于这些需求,如果手动写规则来提取的话,会非常麻烦。

不过好在 Python 有一个第三方库已经解决了这个问题,这就是tld。

我们先来安装它:

  1. python3 -m pip install tld 

安装完成以后,我们来看看它的使用方法:

  1. >>> url = 'https://www.kingname.info/2020/10/02/copy-from-ssh/' 
  2. >>> from tld import get_tld 
  3. >>> result = get_tld(url, as_object=True
  4. >>> domain = result.domain 
  5. >>> print(domain) 
  6. kingname 
  7. >>> domain_with_suffix = result.fld 
  8. >>> print(domain_with_suffix) 
  9. kingname.info 

首先使用get_tld生成一个对象,然后通过对象的.domain属性获得纯域名,使用.fld属性,获得带有后缀的域名。

运行效果如下图所示:

对于不含https的网址,直接使用会报错,如下图所示:

但只要加上一个参数fix_protocol=True就可以解决问题:

 

责任编辑:赵宁宁 来源: 未闻Code
相关推荐

2009-08-14 18:03:47

C#正则表达式提取

2021-04-16 20:50:16

URL爬虫参数

2021-05-13 23:54:12

DockerDockerfile镜像

2021-10-21 05:41:27

QueenSono安全工具提取数据

2012-05-03 08:42:40

Windows7

2015-10-19 17:39:42

程序员倦怠

2023-10-05 05:59:11

网络安全传送门

2016-01-26 11:08:54

2020-02-12 08:00:44

SaaS数据云计算

2019-10-30 05:32:17

网址URLIP地址

2021-08-30 23:47:28

URLQuery字段

2021-11-12 09:35:33

网址URLLinux

2021-06-01 21:22:44

解析域名编程

2014-05-07 09:20:45

Liunx快速阅读

2014-06-27 09:34:03

AngularJS

2023-11-15 13:04:30

Python提取表格

2009-09-22 10:04:00

Windows 7文件管理

2019-01-07 08:10:54

微服务单体 Web

2021-03-10 10:20:06

Linux文本命令

2021-01-09 23:11:33

SQL数据库字母
点赞
收藏

51CTO技术栈公众号