| from Bio import Entrez |
|
|
| try: |
| from utils.config import EMAIL |
| except ImportError: |
| from utils.config_sample import EMAIL |
|
|
|
|
| class PubMedFetcher: |
| def __init__(self, email=None, pmids=None): |
| self.email = email if email else EMAIL |
| self.pmids = pmids |
|
|
|
|
| def fetch_abstract(self): |
| |
| Entrez.email = self.email |
|
|
| |
| handle = Entrez.efetch(db="pubmed", id=self.pmids, rettype="abstract", retmode="xml") |
| fetch_record = Entrez.read(handle) |
|
|
| |
|
|
| articles = [] |
| for idx, rec in enumerate(fetch_record["PubmedArticle"]): |
| articles.append({ |
| 'PMID': self.pmids[idx], |
| 'Title': rec["MedlineCitation"]["Article"]["ArticleTitle"], |
| 'Abstract': rec["MedlineCitation"]["Article"]["Abstract"]["AbstractText"][0] if "Abstract" in rec["MedlineCitation"]["Article"] else "" |
| }) |
|
|
| return articles |
|
|
|
|
| if __name__ == '__main__': |
|
|
| |
|
|
| id_list = [26502953, 19016404, 25837277, 34209617, 35602107] |
|
|
| fetcher = PubMedFetcher(email=EMAIL, pmids=id_list) |
|
|
| print(fetcher.fetch_abstract()) |
|
|