2

host = parsed.netloc.split('@')[-1].split(':')[0]有人可以在下面的代码中向我解释这一行的目的吗?我知道我们正在尝试从 netlock 获取主机名,但我不明白为什么我们要使用 @ 分隔符拆分,然后再使用 : 分隔符。

import urlparse
parsed = urlparse.urlparse('https://www.google.co.uk/search?client=ubuntu&channel=fs')
print parsed
host = parsed.netloc.split('@')[-1].split(':')[0]
print host


Result:

ParseResult(scheme='https', netloc='www.google.co.uk', path='/search', params='', query='client=ubuntu&channel=fs, fragment='')

www.google.co.uk

当然,如果只需要域,我们可以从 urlparse.netloc 获得

4

1 回答 1

3

完整形式的 Netloc 可以具有 HTTP 身份验证凭据和端口号:

login:password@www.google.co.uk:80

参见RFC1808RFC1738

因此,我们可能必须将其拆分为["login:password", "www.google.co.uk:80"],取最后一部分,将其拆分为["www.google.co.uk", "80"]主机名。

如果省略了这些部分,则尝试在不存在的分隔符上进行拆分是没有害处的,并且无需检查它们是否被省略。

urlparse文件

于 2013-07-04T21:49:39.090 回答