无法使用python urlparse解析Url

时间:2015-01-26 06:26:26

标签: python bash urlparse

我正在尝试编写一个小脚本,将url作为输入并解析它。

以下是我的剧本

#! /usr/bin/env python

import sys

from urlparse import urlsplit
url = sys.argv[1]
parseUrl = urlsplit(url)
print 'scheme  :', parseUrl.scheme
print 'netloc  :', parseUrl.netloc

但是当我用./myscript http://www.example.com

执行此脚本时

显示以下错误。

AttributeError: 'tuple' object has no attribute 'scheme'

我是python/scripting的新手,我在哪里做错了?

编辑:我使用的Python版本是Python 2.7.5

2 个答案:

答案 0 :(得分:0)

你不想要计划。相反,在这种情况下,您希望访问元组的0索引和元组的1索引。

print 'scheme  :', parseUrl[0]
print 'netloc  :', parseUrl[1]

urlparse使用.scheme.netloc表示法,urlsplit instead uses a tuple (refer to the appropriate index number):

  

这与urlparse()类似,但不会从中分割出params   URL。如果更多,通常应该使用它而不是urlparse()   最近的URL语法允许将参数应用于每个段   需要URL的路径部分(请参阅RFC 2396)。独立   需要函数来分隔路径段和参数。这个   函数返回一个5元组:(寻址方案,网络位置,   路径,查询,片段标识符)。

     

返回值实际上是元组子类的一个实例。这个   class具有以下附加的只读便利属性:

Attribute Index   Value                               Value if not present
scheme      0       URL scheme specifier                empty string
netloc      1       Network location part               empty string
path        2       Hierarchical path                   empty string
query       3       Query component                     empty string
fragment    4       Fragment identifier                 empty string
username            User name                           None
password            Password                            None
hostname            Host name (lower case)              None
port                Port number as integer, if present  None

答案 1 :(得分:0)

查看文档,听起来您使用的是Python 2.4,它没有添加属性。另一个回答错过了文档中的关键位:

  

2.2版中的新功能。

     

在版本2.5中更改:添加了返回值的属性。

您必须通过索引或解压缩访问元组部分:

scheme, netloc, path, query, fragment = urlsplit(url)

但是,您应该真正升级到Python 2.7。不再支持Python 2.4。