urlparse 库中的 urljoin 问题改进


刚发现个问题,合并URL时的问题。
一直以来我们都用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
搞定

 摘自 python.cn

相关内容

    暂无相关文章

评论关闭