如何用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)、注册域名和子域名,直接提取核心主体:
- 先安装:
pip install tldextract - 示例代码:
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
相关产品推荐
相关产品推荐

