Login
网站首页 > 文章中心 > 其它

Python实现从url中提取域名的几种方法

作者:小编 更新时间:2023-08-10 13:02:48 浏览量:110人看过

下面是我的完整回答.

提取url中的域名是一个常见的需求.在Python中,可以使用多种方法来实现这一目标.

方法一:使用Python内置库

Python内置了一个urllib.parse库,它可以帮助我们解析url中的各个部分.

我们只需要使用urlsplit函数来将url分解成几个部分,然后从中提取出域名即可.代码如下:

Python实现从url中提取域名的几种方法-图1

from urllib.parse import urlsplit

url = "https://www.baidu.com"
domain = urlsplit(url).hostname
print(domain)  # baidu.com

方法二:使用正则表达式

正则表达式是一种强大的字符串匹配工具,可以用来匹配特定模式的字符串,所以呢也可以用来提取url中的域名.

常见的域名有一些特征,比如全是英文字母、数字和点号组成,而且其中含有一个或多个点号.我们可以利用这些特征来编写正则表达式.代码如下:

import re

url = "https://www.baidu.com"
domain = re.search("[a-zA-Z0-9]+\.[a-zA-Z0-9]+", url).group()
print(domain)  # baidu.com

方法三:使用第三方库

Python中有一些第三方库可以帮助我们提取url中的域名.其中比较常用的是tldextract库.

tldextract库可以自动识别出url中的顶级域名(TLD),包括域名和子域名在内的所有部分.代码如下:

import tldextract

url = "https://www.baidu.com"
domain = tldextract.extract(url).registered_domain
print(domain)  # baidu.com

示例一:从url中提取一级域名

以上三种方法都可以提取url中的域名,但有时候我们只需要提取一级域名,即顶级域名的一级子域名.

使用方法一和方法三需要些许修改,使用方法一需要用rslipt函数切片分割域名,第三种方法需要使用subdomain属性.

方法一(修改后):

from urllib.parse import urlsplit

url = "https://www.baidu.com"
domain = urlsplit(url).hostname
first_level_domain = '.'.join(domain.split('.')[-2:])
print(first_level_domain)  # baidu.com

方法三(修改后):

import tldextract

url = "https://www.baidu.com"
domain = tldextract.extract(url)
first_level_domain = '.'.join([domain.domain, domain.suffix])  # 构建一级域名
print(first_level_domain)  # baidu.com

示例二:提取url中的子域名

有时候我们还需要提取url中的子域名.我们可以使用方法三中的subdomain属性来实现.代码如下:

import tldextract

url = "https://www.news.baidu.com"
domain = tldextract.extract(url)
subdomain = domain.subdomain
print(subdomain)  # news

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章