我想在一个给定的url字符串前面添加'http‘方案名称,如果它丢失了。否则,不要管url,所以我认为urlparse是正确的方式。但是每当没有方案并且我使用get url时,我在方案和域之间得到的是/而不是'//‘。
>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///如何将此url转换为如下所示:
'http://www.example.com' # two //发布于 2011-09-03 05:46:04
简短的回答(但这有点同义反复):
>>> 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='')发布于 2011-09-03 12:08:53
如果您想要像您打算的那样使用urlparse,最接近的“正确”等效方法是使用"//www.example.com“作为urlstring。这样的urlstring无疑是不带模式的绝对路径,因此您可以提供"http“作为默认模式。我想你可以通过检测你的URL是否包含字符串"//“来做到这一点,如果没有,在前面加上"//”。
https://stackoverflow.com/questions/7289481
复制相似问题