2011-11-22 11 views
55

は、私は2つのURLを持っている:絶対URLと相対URLを結合するにはどうすればよいですか?

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

は、どのように私はURL2のための絶対URLを得ることができますか?

+0

可能複製(http://stackoverflow.com/questions/1793261/how-to-join-components-of-a [あなたはPythonでURLを構築しているパスのコンポーネントを結合する方法] -path-you-you-are-a-pythonを構築中) –

+0

関連:[URLパスコンポーネントをインテリジェントに結合する](http://codereview.stackexchange.com/questions/13027/joining-url-path-コンポーネントをインテリジェントに) – kojiro

答えて

120

あなたはurlparse.urljoin使用する必要があります:あなたはuse it as followのPython 3(urlparse is renamed to urllib.parse)で

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

をできます

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

3またはモードパラメータで 'urljoin'をどのように使うのか、あるいはどのライブラリを推奨しますか? –

+0

@mesuuttループを作成し、各パートを以前に結合されたURLと結合しようとします。 –

+1

@CédricJulien:単純なループは機能しません。先行する '/'を持つパスはリセットされ、返り値スキーム+ 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' 

シンプル。

7
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml'] 
base = '' 
map(lambda e: urlparse.urljoin(base, e), es) 
関連する問題