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
答案 0 :(得分:6)
如果没有scheme://,则无法保证example.com是一个域。你可以有一个名为example.com的目录。类似地,你可以有一个url'omfgroflmao / path / file.ext',你怎么知道'omfgroflmao'是否是本地网络上的一台机器(即netloc),或者它是否意味着它是一个路径组件?
我看不出Python代码实际上是错误的,但是文档需要在这种模糊的情况下明确说明行为(我没有检查过)。
答案 1 :(得分: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()
和类似函数的参数。