urlparse.urlparse返回3个'/'而不是2个
我想在一个网址字符串前面加上'http'这个前缀,如果它本来就没有的话。如果网址已经有前缀了,就不动它。我觉得用urlparse这个工具可以做到。但是每当网址没有前缀时,我用get url的时候,得到的结果是///,而不是'//',这个'//'应该是在前缀和域名之间的。
>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///
我该怎么把这个网址转换成看起来像这样:
'http://www.example.com' # two //
2 个回答
2
如果你想像之前那样使用urlparse,最接近“正确”的做法是把"urlstring"写成"//www.example.com"。这样的urlstring是一个明确的绝对路径,但没有指定协议,所以你可以把"http"当作默认的协议。我想你可以通过检查你的URL里是否包含"//"这个字符串,如果没有的话,就在前面加上"//"来实现这个功能。
6
简短的回答(不过有点自说自话):
>>> urlparse.urlparse("http://www.example.com").geturl()
'http://www.example.com'
在你的示例代码中,主机名被解析成了一个路径,而不是一个网络位置:
>>> urlparse.urlparse("www.example.com/go")
ParseResult(scheme='', netloc='', path='www.example.com/go', params='', \
query='', fragment='')
>>> urlparse.urlparse("http://www.example.com/go")
ParseResult(scheme='http', netloc='www.example.com', path='/go', params='', \
query='', fragment='')