2016-05-31 24 views
2

Ich muss PubMed Artikel ernten automatisieren. Ich fand nur Beispiele zum Herunterladen PubMed Artikel nach Begriff Abfrage und Herunterladen eines PubMed Artikels von pmid. (EIN ARTIKEL) Aber was ich denke ist, eine Liste der PubMed IDs nach Datum (von-bis) oder alle von ihnen, wie in der OAI herunterladen.Laden Sie eine Liste aller Pubmed IDs nach Datum herunter (von-bis)

+0

Ist Ihr Problem gelöst oder noch offen? –

Antwort

2

Sie können BioPython für solche Zwecke verwenden. Das folgende Code-Snippet gibt Ihnen einen Link für alle PubMed-Artikel in einem bestimmten Zeitraum. PMC-Artikel können direkt heruntergeladen werden, für andere Artikel wird der DOI bereitgestellt, aber der Speicherort des PDFs ist für den Herausgeber spezifisch und kann nicht für alle Artikel vorhergesagt werden.

def article_links(start_date, end_date = '3000'): 
    """ 
    start_date, end_date = 'YYYY/MM/DD' 
    returns a list of PubMedCentral links and a 2nd list of DOI links 
    """ 
    from Bio import Entrez 

    Entrez.email = "[email protected]" 

    #get all articles in certain date range, in this case 5 articles which will be published in the future 
    handle = Entrez.esearch(db="pubmed", term='("%s"[Date - Publication] : "%s"[Date - Publication]) ' %(start_date, end_date)) 
    records = Entrez.read(handle) 

    #get a list of Pubmed IDs for all articles 
    idlist = ','.join(records['IdList']) 
    handle = Entrez.efetch("pubmed", id=idlist, retmode="xml") 
    records = Entrez.parse(handle) 

    pmc_articles = [] 
    doi = [] 
    for record in records: 
     #get all PMC articles 
     if record.get('MedlineCitation'): 
      if record['MedlineCitation'].get('OtherID'): 
       for other_id in record['MedlineCitation']['OtherID']: 
        if other_id.title().startswith('Pmc'): 
         pmc_articles.append('http://www.ncbi.nlm.nih.gov/pmc/articles/%s/pdf/' % (other_id.title().upper())) 
     #get all DOIs 
     if record.get('PubmedData'): 
      if record['PubmedData'].get('ArticleIdList'): 
       for other_id in record['PubmedData']['ArticleIdList']: 
        if 'doi' in other_id.attributes.values(): 
         doi.append('http://dx.doi.org/' + other_id.title()) 


    return pmc_articles, doi 

if __name__ == '__main__': 
    print (article_links('2016/12/20'))