本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2020-10-28 | 编程技术 | 2160 次阅读 | 等你评论 | 2 次点赞 | 繁体

有时候,我们要从一段很长的 URL 里面提取出域名。例如从https://www.kingname.info/2020/10/02/copy-from-ssh/,我需要获取的是kingname.info

可能有人会这样写代码:

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

运行效果如下图所示:

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

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

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

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

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

我们先来安装它:

python3 -m pip install tld

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

>>> url = 'https://www.kingname.info/2020/10/02/copy-from-ssh/'
>>> from tld import get_tld
>>> result = get_tld(url, as_object=True)
>>> domain = result.domain
>>> print(domain)
kingname
>>> domain_with_suffix = result.fld
>>> print(domain_with_suffix)
kingname.info

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

运行效果如下图所示:

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

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

via:https://mp.weixin.qq.com/s/27mdyBEgP8zWexbAYWOfYw

标签: python

猜你喜欢
Python小技巧之不用GUI,照样实现图形界面
小王平常的工作是做数据处理的,手中自然握有大量的数据,在日常工作中经常需要根据业务的需求提取相应的数据,有些需求是固定的,写好脚本之后只要定期提取数据就行了。但是,像我这么懒的人,这种工作怎么可...
python | 协程与多进程的完美结合
我们知道,协程本质上是单线程单进程,通过充分利用 IO 等待时间来实现高并发。在 IO 等待时间之外的代码,还是串行运行的。因此,如果协程非常多,多少每个协程内部的串行代码运行时间超过了 IO ...
为什么网站知道我的爬虫使用了代理?
经常有朋友问:为什么自己的爬虫明明设置了代理,但一访问网站就能被发现。我总结了几种常见的情况。实际上,网站要识别你是否使用了代理,并不一定非要什么高深的反爬虫机制,也不需要使用 AI 识别用户行...
三行代码捅穿 CloudFlare 的五秒盾
经常写爬虫的同学,肯定知道 CloudFlare 的五秒盾。当你没有使用正常的浏览器访问网站的时候,它会返回如下这段文字:Checking your browser before accessi...
loguru 简单方便的 Python 日志记录管理模块
这是个啥?在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。在使用时我们需要配置一些 Handler、Formatter 来进行一些...
loguru 简单方便的 Python 日志记录管理模块
# 这是个啥? 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。在使用时我们需要配置一些 Handler、Formatter 来进行一
让 macOS 终端走代理的四种方法
# 介绍 当我们在使用小飞机的时候浏览器可以实现代理,但是 macOS 系统下终端仍然不走代理,下面提供的四种办法优点在于简单直接,并且影响面很小(只对当前终端有效)。 # 方法 1
javascript | 原生JS多语言切换简单实现
由于项目需要实现一个前端的多语言切换,不想因为一个简单的功能就引入 jQuery,所以经过 google 编程大法摸索出一个原生 JS 就可以实现的多语言前端切换的小例子,仅供参考。 ![图片a
window10 彻底关闭自动更新
一般来说,及时更新升级的操作系统是比较安全的。但是有的人对自动升级却非常讨厌。这里将介绍如何完全禁止 win10 自动升级。 有多种方法,参照其一即可,保险起见可全部设置。 # 一、方法一(修
(首次提交评论需审核通过才会显示,请勿重复提交)