解析 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)
基本上我正在做的是使用 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)