⬜
PubMedのAPIを使用して、検索したりメタデータを取得したりする
こんにちは、沙代です。
たまにAPIで論文を得たりしたいことって、ありますよね。汗
しばしば忘れるので、備忘録のためにもメモしてみようと思います。
Python 3.11.1
検索する
import requests
def fetch_pubmed_papers(term, retmax=100) -> dict:
url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi"
params = {"db": "pubmed", "term": term, "retmax": retmax, "retmode": "json"}
response = requests.get(url, params=params)
return response.json()
以下のようにして得られます。
result = search_pubmed(term="hypertension", retmax=5)
返り値はdict
です。
pubmed idのリストは以下のようにして得られます。
result["esearchresult"]["idlist"]
メタデータを得る
def get_summary(pmid_list: list[str]) -> dict:
url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi"
params = {"db": "pubmed", "id": ",".join(pmid_list), "retmode": "json"}
response = requests.get(url, params=params)
return response.json()
以下のようにして使います。
summary = get_summary(["123456", "234567"])
返り値はdict
です。(header
, result
のキーがあります)
例えば、"123456"
のpmidの情報がほしい場合は、以下のようにします。
summary["result"]["123456"]
(dict
)
(どうもDOIは含まれないようです。うーん🤔)
注意点
1秒間に3回以上すると怒られます。(というか良くないです。)
私は1秒間に最大1回にしています。(のんびり)
参考にさせていただいたページ
Discussion