Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一日一技:如何从 URL 中快速提取域名?

一日一技:如何从 URL 中快速提取域名?

作者头像
青南
发布于 2020-11-03 06:55:26
发布于 2020-11-03 06:55:26
5.1K00
代码可运行
举报
文章被收录于专栏:未闻Code未闻Code
运行总次数:0
代码可运行

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

可能有人会这样写代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

我们先来安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python3 -m pip install tld

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> 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就可以解决问题:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一日一技:不用get获取字典中不存在的Key
现在问题来了,每次都用 .get方法,虽然能解决问题,但是这样写起来代码不美观。并且实际上,只要key不存在,直接返回 None即可。
青南
2019/05/13
9790
一日一技:不用get获取字典中不存在的Key
​一日一技:如何替换URL中的query字段?
在我们写爬虫的时候,可能会需要在爬虫里面基于当前url生成一个新的url。例如下面这段伪代码:
青南
2021/09/09
1.8K0
一日一技:在Scrapy中如何拼接URL Query参数?
我们知道,在使用Requests发起GET请求时,可以通过params参数来传递URL参数,让Requests在背后帮你把URL拼接完整。例如下面这段代码:
青南
2023/09/11
5930
一日一技:在Scrapy中如何拼接URL Query参数?
一日一技:Scrapy 如何正确 Post 发送 JSON 数据
我们知道,HTTP请求的 POST 方式,提交上去的数据有很多种格式。例如JSON/form-data/x-www-form-urlencoded等等。我们在 Postman 的 POST 请求里面,可以看到这些数据格式,如下图所示:
青南
2021/06/23
3.3K0
一日一技:Scrapy 如何正确 Post 发送 JSON 数据
一日一技:从Python源代码里面证明你的猜想
看过《Python爬虫开发 从入门到实战》的同学,应该对 multiprocessing这个模块比较熟悉,在书上我使用这个模块通过几行代码实现了一个简单的多线程爬虫:
青南
2019/08/06
6280
一日一技:字符串format忽略缺失的字段
在一些大型项目的开发中,我们需要创建很多字符串模板,然后在需要的时候填入对应的信息。例如:
青南
2023/01/03
7010
一日一技:字符串format忽略缺失的字段
一日一技:如果你非要把HTML存到数据库,那么你应该…
在粉丝群里面,我多次强调爬虫不要把网页源代码存入数据库,但还是有很多同学这样做。源代码动辄几十 KB 甚至几 MB,存放到数据库里面会严重拖慢性能。
青南
2021/12/01
5560
一日一技:如果你非要把HTML存到数据库,那么你应该…
一日一技:方法不对,代码翻倍。Requests如何正确重试?
我们在做Python开发时,经常使用一些第三方库,这些库很多年来持续添加了新功能。但我发现很多同学在使用这些第三方库时,根本不会使用新的功能。他们的代码跟几年前没有任何区别。
青南
2023/08/21
7300
一日一技:方法不对,代码翻倍。Requests如何正确重试?
一日一技:在Python中使用类型标注
由于Python是动态语言,不需要为变量提前设定类型,这为开发提供便捷的同时也带来了一些麻烦。
青南
2019/02/27
2.2K0
一日一技:在Python中使用类型标注
一日一技:如何提取网页中的日期?
最近我发现Python的一个第三方库,叫做htmldate,经过测试,它提取新闻的发布时间比较准确。我们来看看这个库怎么使用。首先使用pip安装:
青南
2022/04/07
1.6K0
一日一技:如何提取网页中的日期?
一日一技:快速实现Python 命令行参数
那么使用 sys模块就不好用了。此时我们可以使用 argparse。但是如果你阅读它的官方文档:https://docs.python.org/zh-cn/3/howto/argparse.html,你就会发现 argparse写起来还是有点麻烦。
青南
2019/09/03
4280
一日一技:快速实现Python 命令行参数
一日一技:前端与后端都是怎么读写 Cookies 的?
大家应该看过一些网站,在第一次访问的时候,它会弹出一些小提示或者操作指导,类似于下图所示:
青南
2021/07/20
9230
一日一技:这个数据库用起来刚刚好
我的公众号是使用Bear这个Mac App来写的。它在官网上写到,所有笔记数据通过SQLite来储存,如下图所示。
青南
2020/06/10
4790
一日一技:如何识别一张图片的格式
在有些时候,我们拿到了一张图片的二进制数据,但却不知道这张图片应该是什么格式。例如,某个 HTTP接口返回给你一段 Base64编码的图片数据,如下图所示:
青南
2021/03/04
2.1K0
一日一技:如何让 itertools.tee 线程安全
在上一篇文章中,我们说到了,itertools.tee不是线程安全的,并给出了一个例子,如下图所示:
青南
2019/11/09
6070
一日一技:在Golang下如何相对简单地开发爬虫?
我之前一直用 Python 来写爬虫,现在,尝试用 Golang 来实现一个简单的爬虫,请求网址,然后使用 XPath 提取数据。
青南
2020/09/30
1.8K0
一日一技:使用 Locust对网络接口进行压力测试
最近,有同学反应我的博客[1]访问速度有点慢,那么我如何直观地知道我博客的访问速度呢?
青南
2019/10/15
7640
一日一技:使用 Locust对网络接口进行压力测试
一日一技:更友好的格式化数据提取方案
在工作中,我们开发的系统会涉及到大量的日志。同时,我们还有另一套系统会对日志的内容进行监控,从而判断系统是否正常运作。
青南
2020/08/13
4310
一日一技:如何正确管理项目的环境变量
在之前的公众号文章:开发经验:如何正确设置开发环境与生产环境的配置参数中,我提到了把项目的开发环境与生产环境的配置文件分开管理这种方式。
青南
2021/09/29
1.4K0
一日一技:在Python中双下划线私有方法不能被调用的原理
在使用Python编写面向对象的代码时,我们会常常使用“继承”这种开发方式。例如下面这一段代码:
青南
2019/06/19
1.7K0
一日一技:在Python中双下划线私有方法不能被调用的原理
推荐阅读
相关推荐
一日一技:不用get获取字典中不存在的Key
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验