无法比较python中的两个绝对URL

时间:2018-07-27 13:52:03

标签: python python-2.7 url python-requests urlparse

我有3种情况,如下所示:

按照以下代码比较我的URL域:

def compare_domains(urls):
    ''' Return True if the domains of the provided urls are the same.
    '''
    first_domain = None
    for url in urls:
        # all urls are interpreted as absolute urls,
        # except for urls that start with a /
        try:
            if not urlparse.urlparse(url).scheme and not url.startswith('/'):
                url = '//' + url
            parsed = urlparse.urlparse(url.lower(), 'http')
            domain = (parsed.scheme, parsed.hostname, parsed.port)
        except ValueError:
            # URL is so messed up that even urlparse can't stand it
            return False

        if not first_domain:
            first_domain = domain
            continue
        if first_domain != domain:
            return False
return True

def on_same_domain(data_dict):
    # compare CKAN domain and resource URL
    URL1 = site_url1
    URL2 = site_url2
    return compare_domains([URL1, URL2])

情况1:非代理查询

URL 1: http://172.30.66.61:1026/query 
URL 2: http://172.30.66.61:1026

相同domain = true情况,因此出错。不可能

案例2:代理查询(使用abc)

URL 1: http://172.30.66.61/abc/query
URL 2: http://172.30.66.61

根据上述代码情况,同一个domain = true,但是启用了代理。(启用代理时是abc)

因此,代码不应返回错误。

实际上,问题是当使用代理URL时,URL的路径存在+它是同一个域,它不应该返回错误,但是

当不使用代理abc时,它是same_domain并且应该发生错误。

我无法将上述条件的条件写为proxify url,即 abc 可能是任何东西,但 / query 始终存在。

此外,我认为如何比较URL中的两个路径?

0 个答案:

没有答案