2015-03-18 62 views
0

我試圖從每個職業隊的打印屬性下面的XML文件http://api.cbssports.com/fantasy/pro-teams/?version=3.0&SPORT=basketballPython的體育XML解析

在現在我只是想顯示的暱稱,但是這還沒有工作

繼承人我的代碼

from urllib2 import Request, urlopen, URLError 
import xml.etree.ElementTree as ET 

request = Request('http://api.cbssports.com/fantasy/pro-teams?version=3.0&SPORT=basketball') 

try: 
    response = urlopen(request) 
    tree = ET.parse(response) 
    root = tree.getroot() 
    for team in root.findall('pro_team'): 
     nickname = team.get('nickname') 
     print nickname 
except URLError, e: 
print 'error:', e 

回答

1

使用

root.findall('.//pro_team') 

代替root.findall('pro_team')找到root下的所有<pro_team>元素。 root.findall('pro_team')因爲沒有<pro_team>元素這是一個直接孩子的root返回一個空列表。

此外,team.get用於檢索team屬性。暱稱是 不是屬性;它是一個子元素。所以請改用team.find('nickname')


如果暱稱是一個屬性,XML看起來像

<pro_team nickname="Spurs">...</pro_team> 

,而不是

<pro_team><nickname>Spurs</nickname></pro_team> 

import urllib2 
import xml.etree.ElementTree as ET 

url = 'http://api.cbssports.com/fantasy/pro-teams?version=3.0&SPORT=basketball' 
request = urllib2.Request(url) 

try: 
    response = urllib2.urlopen(request) 
    tree = ET.parse(response) 
    root = tree.getroot() 
    for team in root.findall('.//pro_team'): 
     nickname = team.find('nickname').text 
     print nickname 
except URLError, e: 
    print 'error:', e