2011-11-22 13 views
55

Ben iki URL'ler:Mutlak ve göreli URL'ler nasıl katılır?

Ben url2 için mutlak url nasıl alabilirim
url1 = "http://127.0.0.1/test1/test2/test3/test5.xml" 
url2 = "../../test4/test6.xml" 

?

+0

olası yinelenen (http://stackoverflow.com/questions/1793261/how-to-join-components-of-a [Python bir URL inşa edilir bir yolun bileşenlerini nasıl birleştirilir?] -path-in-you-inşa-a-url-in-python) –

+0

İlgili: [url yolu bileşenlerini akıllıca birleştirmek] (http://codereview.stackexchange.com/questions/13027/joining-url-path- Bileşenler-akıllıca) – kojiro

cevap

120

Sen urlparse.urljoin kullanmalıdır:

>>> import urlparse 
>>> urlparse.urljoin(url1, url2) 
'http://127.0.0.1/test1/test4/test6.xml' 

Python 3 (urlparse is renamed to urllib.parse) yapabildin use it as follow olarak:

>>> import urllib.parse 
>>> urllib.parse.urljoin(url1, url2) 
'http://127.0.0.1/test1/test4/test6.xml' 
+0

3 veya mod parametreleriyle 'urljoin' nasıl kullanılır veya bunun için hangi kütüphaneyi önerirsiniz? –

+0

@mesuutt Bir döngü oluşturmayı ve her bir parçayı daha önce birleştirilmiş URL ile birleştirmeyi deneyin. –

+1

@ CédricJulien: Basit bir döngü çalışmayacaktır, çünkü herhangi bir yol, bir '' '' '' '' sıfırla '' ve '' sıfırla '' geri dönecektir ve şema + netloc + lasturl: 'urlparse.urljoin ('http://www.a.com/b/ c/d ','/e ') =>' http: // www.a.com/e '' – MestreLion

4
>>> from urlparse import urljoin 
>>> url1 = "http://www.youtube.com/user/khanacademy" 
>>> url2 = "/user/khanacademy" 
>>> urljoin(url1, url2) 
'http://www.youtube.com/user/khanacademy' 

basit.

7
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml'] 
base = '' 
map(lambda e: urlparse.urljoin(base, e), es) 
ait
İlgili konular