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

Jim*_*Jim 4 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mar*_*ers 11

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

root = ET.fromstring(XML.content) # no .getroot() call required
Run Code Online (Sandbox Code Playgroud)

或传入文件对象:

XML = requests.get(url, stream=True)
tree = ET.parse(XML.raw)
root = tree.getroot()
Run Code Online (Sandbox Code Playgroud)

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