[英]Parsing a XML in Python using ElementTree with repeat elements
[英]Parsing XML: Finding Interesting Elements Using ElementTree
我正在使用urllib和ElementTree来解析来自pubmed的XML API调用。
例如:
#Imports Modules that can send requests to URLs
#Python Version 3.4 Using IEP (Interactive Editor for Python) as IDE
import urllib.request
import urllib.parse
import re
import xml.etree.ElementTree as ET
from urllib import request
#Obtain API Call and assign Element Object to Root
id_request = urllib.request.urlopen('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=1757056')
id_pubmed = id_request.read()
root = ET.fromstring(id_pubmed)
现在,我已经能够使用元素树将数据从ET.fromstring导入到对象根目录。 我现在的问题是,我无法从该对象中找到有趣的元素。
我指的是: https : //docs.python.org/2/library/xml.etree.elementtree.html ,我的XML格式如下: http : //eutils.ncbi.nlm.nih.gov/entrez/eutils /esummary.fcgi?db=pubmed&id=1757056
我努力了:
#Parse Attempts. Nothing returned.
for author in root.iter('Author'):
print (author.attrib)
以及
#No Return for author
for author in root.findall('Id'):
author = author.find('author').text
print (author)
尝试按标签进行迭代
for author in root.iter('Item'):
if author.attrib['Name'] == 'Author':
print("Success")
要么:
author_list = [x for x in root.iter('Item') if x.attrib['Name'] == 'Author']
我不知道您是否可以按属性进行迭代
.attrib
方法返回标签内部的值。 我认为您可能想使用.tag
或.text
代替。 我不确定您要从此树中提取什么数据,但是您也可以遍历author
值。
编辑:好吧,除非您将有更多的DocSum标签,否则esummaryResult标签似乎毫无意义。 但是您想要的信息在您的.text
值中。 尝试打印author.tag
,也许您可以检查返回的值以进行当前迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.