2012-06-17 176 views
0

我得到了一些相當混亂的網址,我通過刮這裏得到的,問題是,它們包含在路徑和查詢字符串中的空格或其他特殊字符,下面是一些例子逃避查詢字符串包含特殊字符與Python

http://www.example.com/some path/to the/file.html 
http://www.example.com/some path/?file=path to/file name.png&name=name.me 

那麼,有沒有一種簡單而強大的方式來逃脫網址,以便我可以將它們傳遞給urlopen? 我試過urlib.quote,但它似乎在查詢字符串中也跳過'?','&'和'=',它似乎也逃避了協議,目前,我正在嘗試做的是使用正則表達式來分離協議,路徑名,查詢字符串,並分別對其進行轉義,但也有他們的arent分離正常 任何建議表示讚賞

+0

如果唯一的問題是空格,那麼'url_str.replace('','%20')'有什麼問題? – Dougal

+0

Dougal,有可能需要編碼的其他字符,我會很快編輯我的問題, – hndr

回答

5

urllib.quote會開出一切,除了/默認情況下。你可以通過它的字符列表獨自離開作爲第二個參數:

urllib.quote('http://www.example.com/some path/?file=path to/file name.png&name=name.me', 
      '/:?&=') 
'http://www.example.com/some%20path/?file=path%20to/file%20name.png&name=name.me' 

但是,這是相當棘手的問題與semimanually搞亂。

+0

謝謝,不知道以前的安全參數... – hndr