繁体   English   中英

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

[英]Make all URLs absolute in a context with both absolute and relative URLs

我正在研究一个网络抓取系统,我正在尝试处理所有网址的绝对性。

基本上,是否有一种正确的方法来使URL绝对?

urllib.parse.urljoin无法执行此操作。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM