如何判断两个URL是否属于同一主域名?排除子域名干扰
判断URL是否同属主域名的正确方法(无需手动字符串解析)
你用urlparse判断域名的问题在于,它返回的hostname包含完整子域名,无法区分主域名与子域名。要不用手动字符串解析提取主域名,可以用专门处理域名解析的第三方库tldextract,它能准确识别主域名(包含.co.uk这类特殊公共后缀)。
步骤:
- 安装库
pip install tldextract
- 提取主域名并判断
tldextract会把域名拆分为子域名、主域名、公共后缀三个部分,拼接主域名和后缀即可得到完整主域:
import tldextract def get_main_domain(url): result = tldextract.extract(url) return f"{result.domain}.{result.suffix}" # 测试示例 url1 = "https://sub1.example.com/page1" url2 = "https://sub2.example.com/page1" url3 = "https://blog.example.co.uk/post" url4 = "https://news.example.co.uk/article" # 判断同主域 if get_main_domain(url1) == get_main_domain(url2): print('Same Domain') # 输出此结果 else: print('Different Domain') # 处理多段后缀场景 if get_main_domain(url3) == get_main_domain(url4): print('Same Domain') # 输出此结果 else: print('Different Domain')
为什么选择tldextract?
它内置了维护更新的公共后缀列表,能正确处理.co.uk、.github.io这类特殊多段后缀,避免手动解析时出现的逻辑错误(比如错误将example.co.uk拆成example.uk)。
Python标准库没有直接提供提取主域名的工具,因为主域名的定义依赖动态更新的公共后缀规则,第三方库更适合处理这类场景。
内容的提问来源于stack exchange,提问作者WeatherMon
相关产品推荐
相关产品推荐

