Entrez(biopython):如何将术语搜索限制在特定的期刊上?(公共医学)

2024-05-16 01:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想获取某一特定期刊上与特定术语/主题相关的所有文章。你知道吗

我正试图通过PubMed使用Biopython中包含的Entrez包来做到这一点。 相应的高级PubMed搜索是:(主题/术语)和“期刊名称”[期刊]

到目前为止,我尝试的是基于Marco Bonzanini编写的代码(包含原始代码https://gist.github.com/bonzanini/5a4c39e4c02502a8451d的GitHub页面)。你知道吗

from Bio import Entrez
def search(query):
    Entrez.email = 'example@mail.com'
    handle = Entrez.esearch(db='pubmed',
                        sort='relevance',
                        retmax='20',
                        retmode='xml',
                        term=query,
                        mindate= "2018/11",
                        maxdate= "2019/02")
     results = Entrez.read(handle)
     return results

 def fetch_details(id_list):
     ids = ','.join(id_list)
     Entrez.email = 'example@mail.com'
     handle = Entrez.efetch(db='pubmed',
                       retmode='xml',
                       id=ids)
    results = Entrez.read(handle)
    return results

if __name__ == '__main__':
    results = search('attention')
    id_list = results['IdList']
    papers = fetch_details(id_list)
    for i, paper in enumerate(papers['PubmedArticle']):
        print("%d) %s" % (i + 1, paper['MedlineCitation']['Article']['ArticleTitle']))

Tags: 代码comid主题searchemaildefentrez
1条回答
网友
1楼 · 发布于 2024-05-16 01:16:56

例如,要查找出现在《实验儿童心理学杂志》上的文章,请将你的主体改为:

if __name__ == '__main__':
    results = search('attention')
    id_list = results['IdList']
    papers = fetch_details(id_list)
    i = 0
    for paper in papers['PubmedArticle']:
        if (paper['MedlineCitation']['Article']['Journal']['Title'] ==
            'Journal of experimental child psychology'):
            i += 1
            print("%d) %s" % (i, paper['MedlineCitation']['Article']
                              ['ArticleTitle']))

相关问题 更多 >