繁体   English   中英

解析XML:使用ElementTree查找有趣的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM