Python urlparse,是正确还是错误?
Python的urlparse函数可以把一个网址分成六个部分(比如协议、网络地址、路径等等)。
我发现,当解析“example.com/path/file.ext”时,它没有返回网络地址部分,而是把整个路径当成了“example.com/path/file.ext”。
难道不应该把网络地址设置为“example.com”,路径设置为“/path/file.ext”吗?
我们真的需要“://”来判断网络地址是否存在吗?
关于这个问题的Python票据:http://bugs.python.org/issue8284
2 个回答
2
example.com/path/file.ext
其实不是一个完整的网址,它只是一个字符串。例如,如果你在 HTML 页面里写 <a href="example.com/path/file.ext">
,那么它 不会 链接到 http://example.com/path/file.ext
。这是因为网页浏览器提供了一个快捷方式,你不需要在前面加上 http://
。而且,你甚至不能把这样的地址当作参数用在 urllib2.urlopen()
这样的函数里。
7
如果没有“scheme://”这个部分,就不能保证example.com一定是一个域名。你可能会有一个叫example.com的文件夹。同样,你也可能有一个网址是'omfgroflmao/path/file.ext',那么你怎么知道'omfgroflmao'是本地网络上的一台机器(也就是一个网络位置)还是说它是路径的一部分呢?
我觉得这段Python代码并没有错,但也许文档需要更清楚地说明在这种模糊情况下的行为(我还没有去查看)。