9

如果缺少给定的 url 字符串,我想在给定的 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 //
4

2 回答 2

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='')
于 2011-09-02T21:46:03.843 回答
1

如果您想按预期使用 urlparse,最接近的“正确”等效项是使用“//www.example.com”作为 urlstring。这样的 urlstring 无疑是没有方案的绝对路径,因此您可以提供“http”作为默认方案。我想您可以通过检测您的 URL 是否包含字符串“//”来做到这一点,如果没有,则在前面添加“//”。

于 2011-09-03T04:08:52.643 回答