2008-10-17 23:28:00
本当はAmazon S3にデータをアップロードするスクリプトの続きなのだけど、ちょっと手間取ってしまったので、途中まで。PubMedをpmidで検索して、論文情報の掲載誌、発表年、著者、題名、要旨などの情報を得て、それをPythonで処理する手順である。これができないと、データの整理ができないのだ。
またもやElementTreeで戸惑う。面倒臭いなあ、ElementTreeは。とにかく、あるフォルダにpmidをファイル名とするpdfファイルを入れておいて、それをまとめて上記の論文情報をPubMedに問い合わせて取得するというところまで。明日は、全文テキストの書き出しと、Amazon S3へのアップロードをしたい。スクリプトは以下の通り。
#!/usr/bin/python # -*- coding: utf-8 -*- import os from urllib import urlopen import xml.etree.ElementTree as ET filelist = os.listdir('./') idlist = [] for pdf_file in filelist: if pdf_file.find('pdf') > 0: pmid = pdf_file.replace(".pdf","") idlist.append(pmid) url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=' + ','.join(idlist) + '&retmode=xml&rettype=full' xml = urlopen(url).read() dom = ET.fromstring(xml) for particle in dom.findall('PubmedArticle'): print particle.findtext('./MedlineCitation/PMID') journal = particle.findtext('./MedlineCitation/Article/Journal/ISOAbbreviation') journal = journal.replace('.','') volume = particle.findtext('./MedlineCitation/Article/Journal/JournalIssue/Volume') pubyear = particle.findtext('./MedlineCitation/Article/Journal/JournalIssue/PubDate/Year') pages = particle.findtext('./MedlineCitation/Article/Pagination/MedlinePgn') title = particle.findtext('./MedlineCitation/Article/ArticleTitle') abstract = particle.findtext('./MedlineCitation/Article/Abstract/AbstractText') authors = particle.findall('./MedlineCitation/Article/AuthorList/Author') aulist = [] for author in authors: aname = author.findtext('./LastName') + "_" + author.findtext('./Initials') aulist.append(aname) print journal, "(", pubyear, ")", volume, ":", pages print ', '.join(aulist) print title
掲載のために一部省略している部分があります。