我有一个网址:http://abc.hostname.com/somethings/anything/我想获得hostname.com我可以使用哪个模块来完成此操作?我想在python2上使用相同的模块和方法非常感谢你!
试试这段代码:
from tldextract import extract
tsd, td, tsu = extract("http://abc.hostname.com/somethings/anything/") # prints abc, hostname, com
url = td + '.' + tsu # will prints as hostname.com
print url
您可以使用python的urlparse
而不是正则表达式或手写解决方案
from urlparse import urlparse
print urlparse('http://abc.hostname.com/somethings/anything/')
>> ParseResult(scheme='http', netloc='abc.hostname.com', path='/somethings/anything/', params='', query='', fragment='')
print urlparse('http://abc.hostname.com/somethings/anything/').netloc
>> abc.hostname.com
没有子域名
t = urlparse('http://abc.hostname.com/somethings/anything/').netloc
print '.'.join(t.split('.')[1:])
>> hostname.com
要在Python 3中解析URL的域,您可以使用:
from urllib.parse import urlparse
domain = urlparse('http://www.example.test/foo/bar').netloc
print(domain) # --> www.example.test
但是,为了可靠地解析顶级域(在此示例中为example.test
),您需要安装专用库(例如,tldextract)。
假设你有一个可访问的字符串,并假设我们想要在顶级域上有多个级别的通用,你可以:
token=my_string.split('http://')[1].split('/')[0]
top_level=token.split('.')[-2]+'.'+token.split('.')[-1]
我们首先通过http://
拆分以从字符串中删除它。然后我们用/
拆分删除字符串的所有目录或子目录部分,然后[-2]
意味着我们在.
之后取第二个最后一个令牌,并用最后一个令牌附加它,以给我们顶级域名。
可能有更优雅和健壮的方法来做到这一点,例如,如果你的网站是http://.com
它会破坏,但它的开始:)
尝试:
from urlparse import urlparse
parsed = urlparse('http://abc.hostname.com/somethings/anything/')
domain = parsed.netloc.split(".")[1:]
host = ".".join(domain)
print host # will prints hostname.com
我发现的最好方法是:
from six.moves.urllib.parse import urlparse
t = urlparse('http://asas.abc.hostname.com/somethings/anything/').netloc
print('.'.join(t.split('.')[-2:]))