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

如何使用Python及Flask动态捕获URL中的域名

嘿,这两个域名处理的场景在开发里挺常见的,我来给你一步步解决!

在Python Flask框架中捕获当前请求的域名

在Flask里,获取当前请求的域名超级方便,框架已经把请求相关的信息封装在request对象里了。这里有几个实用的属性可以直接用:

  • request.host:返回带端口的完整主机地址,比如本地调试时的localhost:5000,线上环境的stackoverflow.com
  • request.hostname:只返回纯域名,自动忽略端口号,比如localhost或者stackoverflow.com

给你写个简单的视图函数示例,一看就懂:

from flask import Flask, request

app = Flask(__name__)

@app.route('/get-domain')
def show_domain():
    full_host = request.host
    pure_domain = request.hostname
    return f"带端口的主机地址: {full_host}\n纯域名: {pure_domain}"

if __name__ == '__main__':
    app.run(debug=True)

要是你需要包含http/https协议的完整根路径,用request.root_url就好,它会返回类似https://stackoverflow.com/的结果,你也可以从这里拆分出域名。

从任意URL动态捕获域名

如果是处理外部的任意URL(不是Flask请求里的),我们可以用两种方法,分别适合不同场景:

方法1:用Python标准库urllib.parse(无需额外安装)

这个方法适合简单的域名提取,不需要处理子域名的情况:

from urllib.parse import urlparse

def pull_domain_from_url(url):
    parsed = urlparse(url)
    # netloc字段包含域名和端口,比如stackoverflow.com或example.com:8080
    domain_with_port = parsed.netloc
    # 拆分掉端口号(如果存在的话)
    clean_domain = domain_with_port.split(':')[0]
    return clean_domain

# 测试你的示例URL
sample_url = "https://stackoverflow.com/questions/ask"
print(pull_domain_from_url(sample_url))  # 输出: stackoverflow.com

不过要注意,这个方法会保留子域名,比如输入https://www.example.com,它会返回www.example.com。如果你需要提取不带子域名的注册域名,比如example.com,就用下面的方法。

方法2:用第三方库tldextract(精准处理复杂域名)

tldextract专门做域名解析,能准确区分顶级域名(比如.com、.co.uk)、二级域名和子域名,完美支持动态域名场景。先安装它:

pip install tldextract

然后写个函数就能用:

import tldextract

def extract_core_domain(url):
    result = tldextract.extract(url)
    # 把二级域名和顶级域名组合起来,得到注册域名
    core_domain = f"{result.domain}.{result.suffix}"
    return core_domain

# 测试示例URL
sample_url = "https://stackoverflow.com/questions/ask"
print(extract_core_domain(sample_url))  # 输出: stackoverflow.com

# 测试带www和复杂后缀的URL
complex_url = "https://blog.sub.example.co.uk/posts"
print(extract_core_domain(complex_url))  # 输出: example.co.uk

这个方法不管URL结构怎么变,都能精准提取到你要的核心域名,完全满足动态URL和动态域名的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:05:30