2010-06-14 2 views
2

나는 크롤 러에 대해 연구 중입니다. 일반적으로 브라우저에 url1을 입력하면 브라우저가 url2로 변환합니다. 어떻게 이것을 파이썬에서 할 수 있습니까?크롤러에 대한 URL을 변환

URL1 : bozulması

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

답변

5

URL (귀하의 경우에는 iso-8859-9)을 올바르게 인코딩하고, 부분으로 분리하고, urllib.quote 쿼리 부분을 인용 한 다음 다시 함께 묶어야합니다. 예 :

>>> 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ın dengesinin bozulması") >>> 'www.odevsitesi.com/ara.asp%3Fkelime%3Ddo%F0an%FDn% 20dengesinin % 20bozulmas % FD ' – user260223

+1

urllib가 파이썬 3 이전에는 지원하지 않는 유니 코드를 사용하지 않도록하십시오. – danben

+2

@ user260223 : 전체 URL이 아닌 쿼리 문자열 만 url-encode하려고합니다. – danben

관련 문제