将url与urlunparse相结合

时间:2010-09-26 14:42:55

标签: python urlparse

我正在写一些东西来“清理”一个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

2 个答案:

答案 0 :(得分:9)

问题在于,在解析非常不完整的网址www.python.org时,您提供的字符串实际上被视为网址的path组成部分,{{1} }(网络位置)一个是空的以及方案。对于默认方案,您实际上可以将第二个参数netloc传递给scheme(简化您的逻辑),但这对“空netloc”问题没有帮助。所以你需要一些 案例的逻辑,例如

urlparse

答案 1 :(得分:0)

这是因为urlparse不是将“www.python.org”解释为主机名(netloc),而是作为路径,就像浏览器在href属性中遇到该字符串一样。然后urlunparse似乎特意解释方案“http”。如果您输入“x”作为方案,您将获得“x:www.python.org”。

我不知道您正在处理的输入范围,但看起来您可能不想要urlparse和urlunparse。