如何使用 Python 搜索 pubmed entrez API 并按元数据过滤结果

如果你想对 Pubmed 搜索结果应用比其 Web 界面中提供的更多过滤器,你可能需要使用 entrez API。

以下示例展示如何按文章最初出现的期刊名称按字母顺序排序。

我建议以 .json 格式处理数据。

pubmed_filter.py
import requests
import json

db = 'pubmed'
domain = 'https://www.ncbi.nlm.nih.gov/entrez/eutils'
nresults = 10
query = "depression"
retmode='json'

# 标准查询
queryLinkSearch = f'{domain}/esearch.fcgi?db={db}&retmax={nresults}&retmode={retmode}&term={query}'
response = requests.get(queryLinkSearch)
pubmedJson = response.json()

results = []

for paperId in pubmedJson["esearchresult"]["idlist"]:
    # 元数据查询
    queryLinkSummary = f'{domain}/esummary.fcgi?db={db}&id={paperId}&retmode={retmode}'
    results.append({'paperId': paperId, 'metadata': requests.get(queryLinkSummary).json()})

    # 检查期刊名称
    # print(results[-1]["metadata"]["result"][paperId]["fulljournalname"])

resultsSorted = sorted(results, key=lambda x: x["metadata"]["result"][x["paperId"]]["fulljournalname"])

with open('resultsSorted.json', 'w') as f:
    json.dump(resultsSorted, f)

Check out similar posts by category: APIs, Python