如何使用 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)If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow