我正在写一些东西来"清理"一个URL.在这种情况下,我所要做的就是返回一个伪造的方案,urlopen如果没有一个方法就行不通.但是,如果我用www.python.org它来测试它会返回http:///www.python.org.有没有人知道为什么额外的/,有没有办法在没有它的情况下返回?
def FixScheme(website):
from urlparse import urlparse, urlunparse
scheme, netloc, path, params, query, fragment = urlparse(website)
if scheme == '':
return urlunparse(('http', netloc, path, params, query, fragment))
else:
return website
Run Code Online (Sandbox Code Playgroud)
问题是,在解析非常不完整的URL时www.python.org,您提供的字符串实际上被视为pathURL 的组成部分,其中netloc(网络位置)为空,以及方案.对于违约的方案,你可以第二个参数实际上传递scheme到urlparse(简化你的逻辑),但简化版,帮助与"空netloc"的问题.所以,你需要一些逻辑是情况下,如
if not netloc:
netloc, path = path, ''
Run Code Online (Sandbox Code Playgroud)