urlparse 库中的 urljoin 问题改进
一直以来我们都用urlparse.urljoin来合并2个URL.但是
问题来了..
看下面的例子.
import urlparse
base='http://blog.xgarden.net/'
url='../../test/index.html'
urlparse.urljoin(base,url)
结果如下:
http://blog.xgarden.net/../../test/index.html
悲剧的../../依旧在其中。
但是在浏览器会自动的进行转换为
http://blog.xgarden.net/test/index.html
而其他的就不会了,比如wget等.
上代码解决之.
import urlparse,os.path
def urljoin(base,url):
join = urlparse.urljoin(base,url)
url = urlparse.urlsplit(join)
path = os.path.normpath(url.path)
return urlparse.urlunsplit((url.scheme,url.netloc,path,url.query,url.fragment))
现在运行下看看:
import urlparse
base='http://blog.xgarden.net/'
url='../../test/index.html'
print urljoin(base,url)http://blog.xgarden.net/test/index.html
搞定
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。