2010-05-15 50 views
0

我要像example.com/page.html一個URL來的財產以後像 example.com/a$xDzf9D84qGBOeXkXNstw%3D%3D106如何將URL編碼用的urllib或urllib2的

+0

你究竟是什麼意思?這看起來不像base64也不是url編碼的字符串 – 2010-05-15 22:11:25

+1

爲什麼?前一個URL看起來更漂亮。請多解釋一下你的問題。 – 2010-05-15 22:11:49

+0

我在猜測a)他愚蠢地尋找一種方法,將URL路徑組件映射到確定性垃圾,原因是(默默無聞)(b)我們永遠不會聽到freeman11 – msw 2010-05-16 05:09:54

回答

3

如果你的意思是這樣的:

>>> import urllib, base64 
    >>> urllib.quote_plus('example.com/page.html') 
    'example.com%2Fpage.html' 
    >>> base64.urlsafe_b64encode('example.com/page.html') 
    'ZXhhbXBsZS5jb20vcGFnZS5odG1s' 
2

你可能想是這樣的:

>>> url = 'stackoverflow.com/questions/2841879/how-to-encode-a-url-with-urllib-or-urllib2' 
>>> host, path = url.split('/', 1) 
>>> path_mangled = ''.join(['%%%02x' % ord(x) if x not in '/?&' else x for x in path]) 
>>> url_mangled = '/'.join([host, path_mangled]) 
>>> url_mangled 
'stackoverflow.com/%71%75%65%73%74%69%6f%6e%73/%32%38%34%31%38%37%39/%68%6f%77%2d%74%6f%2d%65%6e%63%6f%64%65%2d%61%2d%75%72%6c%2d%77%69%74%68%2d%75%72%6c%6c%69%62%2d%6f%72%2d%75%72%6c%6c%69%62%32' 

(請注意,對於具有計劃的完整網址(http://..。),您必須更改第二行)

+0

此問題應該有更多upvotes。這顯然是OP想要的,而且非常有幫助。然而,上面最無用的答案有更多的讚譽。嗯... – Cosine 2013-06-29 17:48:39