我有一个网址:http://abc.hostname.com/somethings/anything/ 我想获得hostname.com 我可以使用哪个模块来完成此任务? 我想在python2上使用相同的模块和方法 非常感谢你!
答案 0 :(得分:4)
试试这段代码:
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
答案 1 :(得分:2)
您可以使用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
答案 2 :(得分:1)
要在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)。
答案 3 :(得分:0)
假设你有一个可访问的字符串,并假设我们想要在顶级域上拥有多个级别的通用,你可以:
token=my_string.split('http://')[1].split('/')[0]
top_level=token.split('.')[-2]+'.'+token.split('.')[-1]
我们先用http://
拆分,然后从字符串中删除它。然后我们用/
拆分删除字符串的所有目录或子目录部分,然后[-2]
表示我们在.
之后取第二个最后一个标记,并附加它最后一个令牌,给我们顶级域名。
可能有更优雅和健壮的方法来做到这一点,例如,如果您的网站http://.com
它会破坏,但它是一个开始:)
答案 4 :(得分:0)
尝试:
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
答案 5 :(得分:0)
我发现的最好方式是:
from six.moves.urllib.parse import urlparse
t = urlparse('http://asas.abc.hostname.com/somethings/anything/').netloc
print('.'.join(t.split('.')[-2:]))