python - 在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 前面使用。我觉得有点奇怪。
解决方案
正如其他人在评论中已经指出的那样,每个 URL 都应该以一个方案开头,最有可能http
或https
在您的情况下。这并不奇怪,方案对于使 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"))
推荐阅读
- php - 如何在 AWS Linux / CentOS 上使用 Yum 更新 PHP 版本
- python - 如何使用python从mysql数据库的信息中执行用户输入
- python - 32 位 pyodbc 和 32 位 Python 是否可以与 64 位 MS 访问数据库通信?
- java - 单元测试类的最佳实践,主要负责调用依赖项的方法,但也包含逻辑
- javascript - Javascript:适合初学者的物理库?
- node.js - 列出所有虚拟机时 azure sdk 出错
- swift - 当我得到什么替代方案:“不允许部分应用'变异'方法”
- c# - 如何在 C# 中通过引用来创建 dll 函数,接受来自 MQL4 的值并返回它?
- python - python中没有+运算符的求和
- python - Pandas 删除逗号分隔的列值中的特定 int 值