PubMed APIでアブストラクト取得まで
前回、筆者名から出している論文IDを取得することができたので、今回はそのIDの論文のアブストラクトを取得するところまで進めました。
まず、E-utilitiesのマニュアルページ(E-utilities Quick Start)で、「Downloading Full Records」の項目からefetch.fcgiについて調べてみました。するとまず、IDを複数同時に指定できることが分かり、またアブストラクトを抽出するには、パラメータとして
「rettype=abstract」
を指定することができるようでした。これをプログラムに取り込んで、efetch.fcgiを呼び出してXMLを取得し、パースして論文タイトルと論文アブストラクトを取得するコードを書きました。
api += "&" + id_list + "&rettype=abstract"
xml = open(api, 'User-Agent' => 'ruby').read
doc = REXML::Document.new(xml)
title = Array.new
doc.elements.each('PubmedArticleSet/PubmedArticle/MedlineCitation/Article/ArticleTitle') do |article|
title.push(article.text) #タイトルを回収
end
i = 0
doc.elements.each('PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Abstract/AbstractText') do |abst|
@abstractHash[title[i]] = abst.text
i +=1
end
といった感じにパースして、得られた@abstractHashをファイルに保存するところまで作成しました。
次回は筆者一覧を用意して、まとめてアブストラクトをファイルに保存するところまで作成したいと思います。