在python中从URL中提取域

时间:2017-05-22 12:51:03

标签: python url

我有一个网址:http://abc.hostname.com/somethings/anything/ 我想获得hostname.com 我可以使用哪个模块来完成此任务? 我想在python2上使用相同的模块和方法 非常感谢你!

6 个答案:

答案 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:]))
相关问题