在绝对和相对URL的上下文中使所有URL绝对

时间:2015-02-12 04:07:09

标签: python url

我正在使用网络抓取系统,而我正试图处理所有网址的绝对制作。

基本上,有一种正确的方法可以使URL绝对吗?

urllib.parse.urljoin无法做到这一点。

>>> urllib.parse.urljoin('http://www.google.com', 'www.bing.com')
'http://www.google.com/www.bing.com'

如此盲目地将所有与urllib.parse.urljoin()的链接展平是不可行的。 Tt在绝对URL具有完整方案的情况下工作:

>>> urllib.parse.urljoin('http://www.google.com', 'http://www.bing.com/')
'http://www.bing.com/'

这似乎应该是urllib.parse模块中的某种东西,或类似的东西。我可以通过使用urllib.parse.urlsplit()的输出来推动我自己的canonizer来决定我是否需要有条件urljoin()一个url到url根目录,但这似乎很粗糙。

1 个答案:

答案 0 :(得分:0)

在大多数情况下,相对网址没有" www。"在里面。因此,您可以检查第二个网址,然后加入网址

def joinURLs(main,relative):
    if 'www.' in relative:
        return relative
    return urllib.parse.urljoin(main,relative)