4

Python 的 urlparse 函数将一个 url 解析为六个组件(scheme、netloc、path 和其他东西)

现在我发现解析“example.com/path/file.ext”不返回netloc,而是返回路径“example.com/path/file.ext”。

不应该是 netloc = "example.com" 和 path = "/path/file.ext" 吗?

我们真的需要一个“://”来确定是否存在 netloc 吗?

Python的票:http ://bugs.python.org/issue8284

4

2 回答 2

6

如果没有 scheme://,就不能保证 example.com 是一个域。您可以有一个名为 example.com 的目录。同样,你可以有一个 url 'omfgroflmao/path/file.ext',你怎么知道 'omfgroflmao' 是本地网络上的一台机器(即 netloc)还是它是否是一个路径组件?

我看不出 Python 代码实际上是错误的,但也许文档需要明确说明在这种模棱两可的情况下的行为(我没有检查过)。

于 2010-04-01T22:06:01.893 回答
1

example.com/path/file.ext不是网址。这只是一些字符串。例如,如果您放入<a href="example.com/path/file.ext">HTML 页面,它不会链接到http://example.com/path/file.ext. 它只是 Web 浏览器提供的快捷方式,您不必在http://. 你甚至不能使用这样的 URL 作为参数urllib2.urlopen()和类似的函数。

于 2010-04-01T22:05:58.423 回答