2010-06-14 81 views
2

我正在使用履带。通常,当我在浏览器中输入url1时,浏览器将其转换为url2。 我如何在Python中做到这一点?转换履带的网址

URL1:www.odevsitesi.com/ara.asp?kelime=doğanındengesininbozulması

URL2:www.odevsitesi.com/ara.asp?kelime=do%F0an%FDn%20dengesinin%20bozulmas%FD

回答

5

您需要对URL进行正确编码(在您的案例中为iso-8859-9),将它分成几部分,urllib.quote查询部分,然后重新组合。 I.e .:

>>> import urlparse 
>>> import urllib 
>>> x = u'http://www.odevsitesi.com/ara.asp?kelime=doğanın dengesinin bozulması' 
>>> y = x.encode('iso-8859-9') 
>>> # just to show what the split of y looks like (we can also handle it as a tuple): 
>>> urlparse.urlsplit(y) 
SplitResult(scheme='http', netloc='www.odevsitesi.com', path='/ara.asp', query='kelime=do\xf0an\xfdn dengesinin bozulmas\xfd', fragment='') 
>>> z = urlparse.urlsplit(y) 
>>> quoted = z[:3] + (urllib.quote(z.query), z.fragment) 
>>> # now just to show you what the 'quoted' tuple looks like: 
>>> quoted 
('http', 'www.odevsitesi.com', '/ara.asp', 'kelime%3Ddo%F0an%FDn%20dengesinin%20bozulmas%FD', '') 
>>> # and finally putting it back together: 
>>> urlparse.urlunsplit(quoted) 
'http://www.odevsitesi.com/ara.asp?kelime%3Ddo%F0an%FDn%20dengesinin%20bozulmas%FD' 
4

urllib.quote

http://docs.python.org/library/urllib.html#urllib.quote

实施例:quote('/~connolly/')产量'/%7econnolly/'

+0

谢谢你的回答。 但这不适合我。 >>> urllib.quote(“www.odevsitesi.com/ara.asp?kelime=doğanındengesininbozulması”) >>>'www.odevsitesi.com/ara.asp%3Fkelime%3Ddo%F0an%FDn% 20dengesinin%20bozulmas%FD' – user260223 2010-06-14 17:34:09

+1

只要确保你没有使用unicode,哪个urllib在Python 3之前不支持的那个urllib – danben 2010-06-14 17:36:40

+2

@ user260223:你只想对url查询字符串进行url编码,而不是整个url – danben 2010-06-14 17:37:12