2

我想用python爬取网页,问题是相对路径,我有以下函数可以对网页中的url进行规范化和去关联化,我无法实现去关联化功能的一部分。有任何想法吗?:

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

问题是:我不知道如何获取主 url,它们可以有多种格式:

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
...
4

2 回答 2

4

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

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

于 2012-05-16T19:32:24.730 回答
3

from urlparse import urlparse

然后解析成各自的部分。

于 2012-05-16T19:31:44.443 回答