You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从URL中提取不含主域名的子域名部分

从URL提取子域名的可行方案

核心前置说明

首先要明确域名的结构逻辑:标准域名格式为[子域名].<主域名>.<顶级域名>,部分顶级域名是多段形式(比如.com.cn、.co.jp),如果要兼容这类场景需要先引入公共后缀列表做匹配,普通场景直接按段拆分即可。

不同环境的实现方案

Python实现

  • 普通场景(仅适配单段顶级域名,比如.com/.org等)
from urllib.parse import urlparse

url = "http://www.example.com"
# 解析URL拿到完整域名
full_domain = urlparse(url).netloc
# 按点拆分域名段
domain_parts = full_domain.split('.')
# 单段顶级域名下,去掉最后两段(主域名+顶级域名),剩余的拼接就是子域名
subdomain = '.'.join(domain_parts[:-2])
print(subdomain) # 输出:www
  • 兼容多段顶级域名的场景,用tldextract库:
import tldextract

url = "http://www.example.com.cn"
ext = tldextract.extract(url)
subdomain = ext.subdomain
print(subdomain) # 输出:www

JavaScript实现

const url = new URL("http://www.example.com");
const fullDomain = url.hostname;
const domainParts = fullDomain.split('.');
// 普通场景取除了最后两段的部分
const subdomain = domainParts.slice(0, -2).join('.');
console.log(subdomain); // 输出:www

如果要兼容多段顶级域名,可以引入psl库(公共后缀列表实现)处理。

Shell命令实现(用grep+awk)

echo "http://www.example.com" | awk -F/ '{print $3}' | awk -F. '{OFS="."; if(NF>2) print $(NF-2)}'
# 输出:www

注意事项

  • 如果主域名本身就是两段以上(比如example.co.uk),直接按去掉最后两段的逻辑会出错,必须依赖公共后缀列表匹配正确的顶级域名段长度
  • 注意URL不带协议的场景,比如www.example.com,部分URL解析库会识别失败,建议先补全协议头再做解析

内容的提问来源于stack exchange,提问作者Supriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:00