首页 > 解决方案 > 在python中使用破折号从URL中提取域

问题描述

我一直在寻找一种从 URL 解析域的方法。有很多图书馆,但我还没有找到完整的图书馆。我目前正在使用urllib.parse. 在解析带有破折号 (-) 的域时,它什么也不返回。我应该考虑使用其他选项吗?

例子:

from urllib.parse import urlparse

print(urlparse("www.bax-shop.nl/muziekwinkel-goes").netloc)

输出:



Process finished with exit code 0

编辑:它似乎https://在 URL 前面使用。我觉得有点奇怪。

标签: pythonurlparse

解决方案


正如其他人在评论中已经指出的那样,每个 URL 都应该以一个方案开头,最有可能httphttps在您的情况下。这并不奇怪,方案对于使 URL 解析器了解他们应该做什么(使用哪种协议连接到地址)至关重要。当然,您可以制作一个解析器来接受类似 URL 的字符串(同样,不是真正的 URL,因为它不能没有第一部分)并从中提取域名。

在你的情况下,我会做这样的事情:

from urllib.parse import urlparse


def get_domain_name(url):
    if '://' not in url:
        # Making `http` the default protocol so that urllib handles url correctly
        url = 'http://' + url

    return urlparse(url).netloc


if __name__ == "__main__":
    print(get_domain_name("https://stackoverflow.com/"))
    print(get_domain_name("www.bax-shop.nl/muziekwinkel-goes"))

推荐阅读