2009-01-24 8 views
49

Gibt es eine Bibliothek in Python, die so funktioniert?Auflösen eines relativen URL-Pfads zu seinem absoluten Pfad

>>> resolvePath("http://www.asite.com/folder/currentpage.html", "anotherpage.html") 
'http://www.asite.com/folder/anotherpage.html' 
>>> resolvePath("http://www.asite.com/folder/currentpage.html", "folder2/anotherpage.html") 
'http://www.asite.com/folder/folder2/anotherpage.html' 
>>> resolvePath("http://www.asite.com/folder/currentpage.html", "/folder3/anotherpage.html") 
'http://www.asite.com/folder3/anotherpage.html' 
>>> resolvePath("http://www.asite.com/folder/currentpage.html", "../finalpage.html") 
'http://www.asite.com/finalpage.html' 

Antwort

85

Ja, es urlparse.urljoin ist, oder urllib.parse.urljoin für Python 3.

>>> try: from urlparse import urljoin # Python2 
... except ImportError: from urllib.parse import urljoin # Python3 
... 
>>> urljoin("http://www.asite.com/folder/currentpage.html", "anotherpage.html") 
'http://www.asite.com/folder/anotherpage.html' 
>>> urljoin("http://www.asite.com/folder/currentpage.html", "folder2/anotherpage.html") 
'http://www.asite.com/folder/folder2/anotherpage.html' 
>>> urljoin("http://www.asite.com/folder/currentpage.html", "/folder3/anotherpage.html") 
'http://www.asite.com/folder3/anotherpage.html' 
>>> urljoin("http://www.asite.com/folder/currentpage.html", "../finalpage.html") 
'http://www.asite.com/finalpage.html' 

für copy-and-paste:

try: 
    from urlparse import urljoin # Python2 
except ImportError: 
    from urllib.parse import urljoin # Python3 
+0

Für eine RFC 3986 und Unicode-kompatible Ersatz finden Sie unter [ uritools] (http://pythonhosted.org/uritools/). – Marian

+0

Dies funktioniert nicht, wenn die zweite Komponente leider absolut ist. Zum Beispiel, 'urljoin (" http://example.com/blah.html "," ./././ whoa.html ") * entfernt * die Punkte, während" urljoin "(http: // Beispiel .com/blah.html "," /./././ whoa.html ") nicht. – obskyr

Verwandte Themen