Pythonic URL解析

时间:2009-05-19 04:36:32

标签: url python

关于如何在Python中解析URL有很多问题,这个问题是关于最佳或最恐怖的方法。

在我的解析中,我需要4个部分:网络位置,URL的第一部分,路径和文件名以及查询字符串部分。

http://www.somesite.com/base/first/second/third/fourth/foo.html?abc=123

应解析为:

netloc = 'www.somesite.com'
baseURL = 'base'
path = '/first/second/third/fourth/'
file = 'foo.html?abc=123'

下面的代码会生成正确的结果,但是有更好的方法可以在Python中执行此操作吗?

url = "http://www.somesite.com/base/first/second/third/fourth/foo.html?abc=123"

file=  url.rpartition('/')[2]
netloc = urlparse(url)[1]
pathParts = path.split('/')
baseURL = pathParts[1]

partCount = len(pathParts) - 1

path = "/"
for i in range(2, partCount):
    path += pathParts[i] + "/"


print 'baseURL= ' + baseURL
print 'path= ' + path
print 'file= ' + file
print 'netloc= ' + netloc

2 个答案:

答案 0 :(得分:6)

由于你对你想要的部分的要求与urlparse给你的要求不同,所以它会得到它的好处。但是,您可以替换它:

partCount = len(pathParts) - 1

path = "/"
for i in range(2, partCount):
    path += pathParts[i] + "/"

有了这个:

path = '/'.join(pathParts[2:-1])

答案 1 :(得分:2)

我倾向于从urlparse开始。此外,您可以使用rsplit以及maxsplitsplit的{​​{1}}参数来简化操作:

rsplit