簡體   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