Python urlparse,是正确还是错误?

4 投票
2 回答
1182 浏览
提问于 2025-04-15 21:08

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代码并没有错,但也许文档需要更清楚地说明在这种模糊情况下的行为(我还没有去查看)。

撰写回答