解析 XML 对象 Python 3.4

Parsing XML Object Python 3.4

基本上我正在做的是使用 urllib.request 对 pubmed 进行 API 调用,在 return 中接收 XML 文件,并尝试解析它运气不好。

我尝试过使用 Element Tree 和其他模块,但没有成功。我相信 XML 对象本身可能存在问题。

#Imorting URL Request Modules for API Calls
#Also importing ElemenTree as it seems to be best for XML parsing

import urllib.request 
import urllib.parse 
import re 
import xml.etree.ElementTree as ET 
from urllib import request 

#Now I can make the API call.  
id_request = urllib.request.urlopen('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=17570568')

#id_request will be an object that I'm not sure I understand?  
#id_request Returns: "<http.client.HTTPResponse object at 0x0000000003693FD0>"
#Let's now read this baby in XML format!
id_pubmed = id_request.read()

#If I look at the id_pubmed object, I not have the XML file I want to parse.

您可以在此处查看 XML 文件 id_pubmed 是什么 calling/prints:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=17570568

我的问题是我根本无法让 Element Tree 解析它。我试过:

tree = ET.parse(id_pubmed)
root = tree.getroot()

以及来自 https://docs.python.org/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree

的各种其他建议

ET.parse() 方法需要 xml 文件的位置(在本地文件系统上)或类似 object 的文件,但您的 id_pubmed 似乎是一个 string 。

在那种情况下,您应该使用 ET.fromstring()。例子-

root = ET.fromstring(id_pubmed)