0

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)

Element Tree を使用して、データを 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)
4

2 に答える 2

1

タグで繰り返してみてください

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']

属性ごとに反復できるかどうかわかりません

于 2015-08-25T14:47:08.757 に答える
0

この.attribメソッドは、タグ内の値を返します。.tagどちらかまたは.text代わりに使用したい場合があると思います。このツリーからどのデータを取得しようとしているのか正確にはわかりませんが、author値をループすることもできます。

編集: DocSum タグを追加しない限り、esummaryResult タグは無意味に思えます。しかし、あなたが欲しい情報はあなたの.text価値にあります。印刷author.tagしてみてください。おそらく、現在繰り返し処理しているものに対して返された値を確認できます。

于 2015-08-25T14:37:47.917 に答える