在python中从URL中提取域

问题描述 投票:1回答:6

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

python url
6个回答
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

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

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)。


0
投票

假设你有一个可访问的字符串,并假设我们想要在顶级域上有多个级别的通用,你可以:

token=my_string.split('http://')[1].split('/')[0]
top_level=token.split('.')[-2]+'.'+token.split('.')[-1]

我们首先通过http://拆分以从字符串中删除它。然后我们用/拆分删除字符串的所有目录或子目录部分,然后[-2]意味着我们在.之后取第二个最后一个令牌,并用最后一个令牌附加它,以给我们顶级域名。

可能有更优雅和健壮的方法来做到这一点,例如,如果你的网站是http://.com它会破坏,但它的开始:)


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

0
投票

我发现的最好方法是:

from six.moves.urllib.parse import urlparse

t = urlparse('http://asas.abc.hostname.com/somethings/anything/').netloc

print('.'.join(t.split('.')[-2:]))
© www.soinside.com 2019 - 2024. All rights reserved.