2010-04-01 70 views
4

Python的urlparse函數將url解析爲六個組件(scheme,netloc,path和其他東西)Python urlparse,正確或不正確?

現在我發現解析「example.com/path/file.ext」不會返回netloc,而是返回一個路徑「 example.com/path/file.ext」。

不應該是netloc =「example.com」和path =「/path/file.ext」?

我們真的需要一個「://」來確定是否存在網絡地址嗎?

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

回答

6

沒有方案://,並不能保證example.com是一個域。你可以有一個名爲example.com的目錄。同樣,你可以有一個url'omfgroflmao/path/file.ext',你如何知道'omfgroflmao'是否是本地網絡上的一臺機器(即netloc)還是它是一個路徑組件?

我看不出Python代碼實際上是錯誤的,但也許文檔需要明確地闡明在這種模棱兩可的情況下(我沒有選中)的行爲。

1

example.com/path/file.ext不是URL。這只是一些字符串。例如,如果您將<a href="example.com/path/file.ext">放入HTML頁面,它將而不是鏈接到http://example.com/path/file.ext。這只是網頁瀏覽器提供的一個快捷方式,您不必預先設定http://。您甚至不能使用此類網址作爲urllib2.urlopen()及類似功能的參數。

+1

但是你可以有這樣的然後類似example會是正確的 – Ben 2010-04-01 22:23:35