我希望这是一个快速的。
我正在尝试从给定的网址获取第二级域名
这是我的代码:
url = url.split(".", 1)[1]
url = url.split('//', 1)[-1]
url = url.split("/", 0)[0]
问题在于最后一行,由于某种原因它似乎没有做任何事情。
如果我提供它url =“http://www.nba.com/sports”
我回来了“nba.com/sports”
我试图获得“nba.com”
答案 0 :(得分:2)
正确的解决方案:不要重新发明轮子,尽可能多地使用the existing libraries:
from urllib.parse import urlsplit
# On Py2, from urlparse import urlsplit
url = "http://www.nba.com/sports"
domain = urlsplit(url).hostname
# split off the last two components, then join them back together to make
# the second level domain
secondlevel = '.'.join(domain.rsplit('.', 2)[-2:])
print(secondlevel)
它会让你nba.com
。
答案 1 :(得分:0)
在每次结果后打印url
,您将看到需要执行的操作:
>>> url = "http://www.nba.com/sports"
>>> url = url.split(".", 1)[1]
>>> print(url)
nba.com/sports
在此之后,很明显我们需要做的就是在/
分开。不要过分复杂化太多:)
>>> url = url.split("/")[0]
>>> print(url)
nba.com
正如@Mark在评论中提到的那样,您也可以使用urllib.urlparse
:
>>> from urllib.parse import urlparse
>>> url = "http://www.nba.com/sports"
>>> urlparse(url)
ParseResult(scheme='http', netloc='www.nba.com', path='/sports', params='', query='', fragment='')
>>> urlparse(url).netloc
'www.nba.com'
然后,如果有必要,您可以从第一个.
删除所有内容,但根据您正在做的事情,您可能不需要这样做。
注意,如果您使用的是Python 2,则该模块为urlparse
。