元素树:从网页获取XML时无法构建根树

时间:2013-06-19 22:20:18

标签: python xml elementtree

我正在尝试解析我正在从网上下载的XML页面。

import requests
url = "http://www.w3schools.com/xml/cd_catalog.xml"
XML = requests.get(url)
print XML.content

tree = ET.ElementTree(XML)
root = tree.getroot()

print root.tag, root.attrib

当我尝试这样做时,我得到了两个错误之一

对于上面的示例网页     AttributeError:'Response'对象没有属性'tag'

对于我正在查看的实际XML站点     AttributeError:'str'对象没有属性'tag'

但是,如果我只是将我已经下载的XML复制并粘贴到.xml文件中并打开它可以正常工作而没有错误。有谁知道如何解决这些问题..?

1 个答案:

答案 0 :(得分:11)

您需要解析响应主体,而不是响应对象:

root = ET.fromstring(XML.content) # no .getroot() call required

或传入文件对象:

XML = requests.get(url, stream=True)
tree = ET.parse(XML.raw)
root = tree.getroot()

如果流被压缩,后者可能会失败;原始文件对象不会为您解压缩。