URL(Uniform Resource Locator)即统一资源定位符,是互联网上标准资源的地址。一个典型的URL由协议类型(如http, https)、主域名、路径和文件名组成。例如,在URL https://www.example.com/path/to/file.html
中,www.example.com
就是主域名。
匹配URL的主域名通常涉及到字符串处理和正则表达式。主域名通常是URL中“//”之后,“/”之前的部分。
import re
def extract_domain(url):
# 正则表达式匹配主域名
match = re.search(r'https?://([^/]+)', url)
if match:
return match.group(1)
return None
# 测试
urls = [
'https://www.example.com/path/to/file.html',
'http://subdomain.example.co.uk',
'https://example.com?query=param'
]
for url in urls:
print(f'URL: {url} -> Domain: {extract_domain(url)}')
原因:
解决方法:
import idna
def extract_domain(url):
# 先对URL进行标准化处理
url = url.split('//')[1].split('/')[0]
# 处理国际化域名
try:
domain = idna.decode(url)
except UnicodeError:
domain = url
# 正则表达式匹配主域名
match = re.search(r'([^/]+)', domain)
if match:
return match.group(1)
return None
通过上述方法,可以有效解决大多数URL主域名匹配的问题。
领取专属 10元无门槛券
手把手带您无忧上云