PubMed Entrez-API mit Python durchsuchen und Ergebnisse nach Metadaten filtern

Wenn auf die Suchergebnisse von PubMed mehr Filter angewendet werden sollen als in der Weboberfläche verfügbar, kann die Entrez-API verwendet werden.

Das folgende Beispiel zeigt, wie alphabetisch nach dem Journal sortiert werden kann, in dem die Artikel ursprünglich erschienen sind.

Ich empfehle, die Daten im .json-Format zu verarbeiten.

pubmed_filter.py
import requests
import json

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

# standard query
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"]:
    # metadata query
    queryLinkSummary = f'{domain}/esummary.fcgi?db={db}&id={paperId}&retmode={retmode}'
    results.append({'paperId': paperId, 'metadata': requests.get(queryLinkSummary).json()})

    # check the journalnames
    # 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