在python中使相对路径绝对

时间:2012-05-16 19:29:22

标签: python web-crawler web-scraping

天哪,你好!我想用python抓取网页,问题是相对路径,我有以下函数来规范化和取消激活网页中的网址,我无法实现解除激活功能的一部分。有任何想法吗? :

def normalizeURL(url):
    if url.startswith('http')==False:
        url = "http://"+url
    if url.startswith('http://www.')==False:
        url = url[:7]+"www."+url[7:]
    return url

def deRelativizePath(url, path):
    url = normalizeURL(url)

    if path.startswith('http'):
        return path
    if path.startswith('/')==False:
        if url.endswith('/'):
            return url+path
        else:
            return url+"/"+path
    else:
        #this part is missing

问题是:我不知道如何获取主网址,它们可以采用多种格式:

http://www.example.com
http://www.example.com/
http://www.sub.example.com
http://www.sub.example.com/
http://www.example.com/folder1/file1 #from this I should extract http://www.example.com/ then add path
...

2 个答案:

答案 0 :(得分:4)

我建议您考虑使用urlparse.urljoin()

  

通过将“基本网址”(base)与其他网址(url)相结合,构建完整(“绝对”)网址。非正式地,这使用基本URL的组件,特别是寻址方案,网络位置和路径(的一部分),以在相对URL中提供缺少的组件。

答案 1 :(得分:3)

from urlparse import urlparse

然后解析各个部分。