Python 2和3从URL中提取域名

14

我有一个URL: http://xxx.abcdef.com/fdfdf/

我想要获取xxx.abcdef.com

我应该使用哪个模块来实现此功能?

我希望能够在Python 2和Python 3中使用同一模块和方法

我不喜欢使用try except的方式来保持Python 2/3兼容性

非常感谢!


3
url.split('/')[2] 的意思是将URL按照"/"进行分割,然后选取第三个元素(从0开始计数)。你是否阅读过完整的Python教程?我喜欢这个:http://www.diveintopython.net/。 - MGP
2个回答

33

使用urlparse

from urlparse import urlparse
o = urlparse("http://xxx.abcdef.com/fdfdf/")
print o

print o.netloc

在Python 3中,您可以这样导入urlparse

from urllib.parse import urlparse

或者,只需使用str.split()

url = "http://xxx.abcdef.com/fdfdf/"

print url.split('/')[2]

旁注:以下是如何编写一个适用于任何版本的 urlparse 导入的示例:

if sys.version_info >= (3, 0):
    from urllib.parse import urlparse
if sys.version_info < (3, 0) and sys.version_info >= (2, 5):
    from urlparse import urlparse

8
urlparse是目前更好的解决方案。 - 2rs2ts

8
你可以使用第三方库six来解决Python版本和标准库函数urlparse之间的兼容性问题,以提取主机名。因此,你只需要 安装six并导入urlparse即可。
from six.moves.urllib.parse import urlparse
u = urlparse("http://xxx.abcdef.com/fdfdf/")
print(u.hostname)

关于urlparse的更多信息 在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接