我正在尝试解析我正在从网上下载的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文件中并打开它可以正常工作而没有错误。有谁知道如何解决这些问题..?
答案 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()
如果流被压缩,后者可能会失败;原始文件对象不会为您解压缩。