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

如何用Python从URL中提取网站名称?求简洁实现方案

从URL提取网站名称的简洁方案

方法一:标准库组合方案(urllib.parse + 正则)

urllib虽无直接提取网站主体名的工具,但可以通过解析+正则快速处理:

  • 用urlparse解析URL,分离出域名部分(netloc)
  • 用正则剔除www/www2/www3这类前缀,同时去掉端口号
  • 拆分域名后,根据常见后缀规则提取主体部分

示例代码:

from urllib.parse import urlparse
import re

def get_site_name(url):
    parsed = urlparse(url)
    # 兼容不带http前缀的URL情况
    netloc = parsed.netloc or parsed.path.split('/')[0]
    # 清理端口号和www类前缀
    cleaned_domain = re.sub(r'^(www\d?\.)|(:\d+)$', '', netloc)
    parts = cleaned_domain.split('.')
    # 针对常见后缀(com/org/net/io等)提取主体
    if len(parts) >= 2:
        # 子域名场景(如docs.python.org)取倒数第二个部分
        return parts[-2] if len(parts) > 2 else parts[0]
    return parts[0]

# 测试
print(get_site_name("https://www.google.com/"))  # 输出: google
print(get_site_name("https://docs.python.org/3/library/urllib.parse.html"))  # 输出: python

方法二:第三方库tldextract(更省心)

这个库专门处理域名解析,能自动识别公共后缀(如.co.uk)、注册域名和子域名,直接提取核心主体:

  1. 先安装:pip install tldextract
  2. 示例代码:
import tldextract

def get_site_name(url):
    domain_info = tldextract.extract(url)
    return domain_info.domain

# 测试
print(get_site_name("https://www.google.com/"))  # 输出: google
print(get_site_name("https://docs.python.org/3/library/urllib.parse.html"))  # 输出: python
print(get_site_name("https://www3.example.co.uk/"))  # 输出: example

该方法无需手动处理各种前缀和边缘后缀场景,简洁且可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:05:35