如何为PubMed/Entrez ESearch API添加文献类型等筛选条件?
如何通过PubMed API筛选特定文献类型或物种
你遇到的问题是因为PubMed网页端的筛选参数格式和API端不兼容,网页里的pubt.meta-analysis不能直接放到API的filter参数里,得用API要求的格式来实现筛选。下面给你两种可行的解决方法:
方法一:在检索词中直接加入限定符
PubMed检索语法支持在query里通过[限定符]指定筛选条件,比如文献类型用[pt](publication type的缩写),物种用[MeSH Terms]或[Species]。
比如要筛选和cancer相关的meta分析,把query改成:
query = "cancer AND meta-analysis[pt]"
如果要筛选人类相关文献,可写成:
query = "cancer AND human[MeSH Terms]"
修改后的完整代码:
import requests import json db = 'pubmed' domain = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils' # 加入meta分析的限定符 query = "cancer AND meta-analysis[pt]" retmode='json' queryLinkSearch = f'{domain}/esearch.fcgi?db={db}&retmode={retmode}&term={query}&sort=relevance' response = requests.get(queryLinkSearch) pubmedJson = response.json() print(pubmedJson)
方法二:使用API的filter参数
API的filter参数格式是键:值,而非网页里的键.值。比如文献类型的键是pubt,对应meta分析的值是meta-analysis,参数要写成&filter=pubt:meta-analysis。
筛选meta分析的完整请求链接示例:
queryLinkSearch = f'{domain}/esearch.fcgi?db={db}&retmode={retmode}&term={query}&sort=relevance&filter=pubt:meta-analysis'
如果要筛选人类物种,filter参数可写成&filter=species:human。
常用筛选参考
- 临床试验:
clinical trial[pt](query方式)或filter=pubt:clinical-trial(API filter方式) - 综述:
review[pt]或filter=pubt:review - 小鼠物种:
mouse[MeSH Terms]或filter=species:mouse
内容的提问来源于stack exchange,提问作者kaotech
相关产品推荐
相关产品推荐

