2011-11-22 14 views
55

Ho due indirizzi:Come iscriversi agli url assoluti e relativi?

url1 = "http://127.0.0.1/test1/test2/test3/test5.xml" 
url2 = "../../test4/test6.xml" 

Come posso ottenere un URL assoluto per url2?

+0

possibile duplicato di [Come aderire componenti di un percorso quando si sta costruendo un URL in Python] (http://stackoverflow.com/questions/1793261/how-to-join-components-of-a -path-when-you-are-constructing-a-url-in-python) –

+0

Correlati: [Unire i componenti del percorso url in modo intelligente] (http://codereview.stackexchange.com/questions/13027/joining-url-path- component-intelligently) – kojiro

risposta

120

Si dovrebbe usare urlparse.urljoin:

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

Con Python 3 (dove urlparse is renamed to urllib.parse) si potrebbe use it as follow:

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

Come usiamo 'urljoin' con 3 o parametri di modalità o quale libreria mi consigliate per questo? –

+0

@mesuutt tenta di creare un ciclo e unire ciascuna parte con l'URL precedentemente aggiunto. –

+1

@ CédricJulien: un ciclo semplice non funzionerà, come ogni percorso con un comando '/' resetterà "e restituirà schema + 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' 

semplice.

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