Скачать список всех опубликованных идентификаторов по дате (от-до)
Мне нужно автоматизировать сбор статей PubMed. Я нашел только примеры загрузки статей PubMed по запросу запроса и загрузки статьи PubMed по pmid. (ОДНА СТАТЬЯ) Но я думаю о том, чтобы загрузить СПИСОК идентификаторов PubMed по дате (от-до) или все из них, как в OAI.
1 ответ
Вы можете использовать BioPython для таких целей. Следующий фрагмент кода даст вам ссылку на все статьи PubMed в определенном диапазоне дат. Статьи PMC можно загрузить напрямую, для других статей предоставляется DOI, но местоположение PDF-файла зависит от издателя и не может быть предсказано для всех статей.
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 = "Your.Name.Here@example.org"
#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'))