我正在研究一個應用程序,它需要解析HTML頁面中的URL(主要是HTTP URL) - 我無法控制輸入,並且其中一部分與預期的一樣,有點凌亂。Python中的URL解析 - 規範化路徑中的雙斜槓
的一個問題,我頻頻遭遇是,是裏urlparse非常嚴格,當談到有雙斜線的路徑部分解析和加入網址,例如(甚至可能是越野車?):
testUrl = 'http://www.example.com//path?foo=bar'
urlparse.urljoin(testUrl,
urlparse.urlparse(testUrl).path)
而不是預期的結果http://www.example.com//path
(或甚至更好,與規範化的單斜槓),我結束了http://path
。
順便說一句,我運行這樣的代碼的原因是因爲它是我迄今爲止發現的脫離URL的查詢/碎片部分的唯一方式。也許有更好的方法來做到這一點,但我找不到一個。
任何人都可以推薦一種方法來避免這種情況,或者我應該只使用一個(相對簡單的,我知道)正則表達式來規範自己的路徑嗎?
你所說的 「這是剝奪查詢/片段部分的唯一途徑」 是什麼意思?斜線與查詢有什麼關係? – jknupp
它與查詢無關 - 我解析URL然後將它自己的路徑加入它的原因是因爲我想刪除查詢和片段。如果有更好的方法來做到這一點,我不需要解決這個問題 – shevron
我認爲urlparse只是正確實現了URL的RFC - 它指定在:部分似乎只有一個斜槓(http: //tools.ietf.org/html/rfc1738) - 所以在你的情況下,我會嘗試去除額外的斜線,然後將它傳遞給urlparse。 –
BergmannF