在上一篇中,写了如何获取某篇英文文献pdf的参考文献信息。
【python实战】获取英文文献pdf中参考文献信息
这些信息中就有DOI号,这样就可以根据DOI号批量去下载参考文献啦~
使用到的包就是scihub
,参考教程:https://zhuanlan.zhihu.com/p/103527076
接上一篇,根据DOI号批量下载参考文献(文件名为文献标题)的代码如下:
from scihub import SciHub
import time,random
def download_doi(path,refdata):
for i in range(len(refdata)):
sleeptime=random.randint(0,25)
print('-----进度-------',str((num+1)/len(title_doilist)*100),'%')
title=refdata['Title'][i]
doiname=refdata['DOI'][i]
refname=path+"\\"+title.replace(' ','_')+'.pdf'
if os.path.exists(refname):
print('已存在:',refname,doiname)
else:
if doiname=='Null':
print('没有DOI:',refname)
else:
try:
print('开始下载:',title,doiname)
time.sleep(sleeptime)
sh = SciHub()
result = sh.download(doiname, path=refname)
if os.path.exists(refname):
print('√下载完成',title,doiname)
else:
print('×下载失败',title,doiname)
except:
print('×下载失败',title,doiname)
使用这个包,试着根据一个Handbook中的某个章节的参考文献进行下载,结果:
共163篇参考文献;其中,有DOI号的139篇;最后下载成功:106篇(76.26%);用时:1761.7s(29.36min,吃个饭回来就下载完了)。
总体来说,如果是要开始了解某个领域,批量下载某个领域的相关文献的话,选择某篇近期(近期的普遍有DOI号)综述、元分析或者Handbook的参考文献。然后,就可以根据DOI批量下载相关文献啦~
需要注意的是:最开始没有设置随机睡眠时间,下了一会儿,就再也下不了了。隔了第二天,设置了随机睡眠时间后,就可以批量下载了。
另外,还有个小技巧,之前有介绍过NoteExpress
如何用NoteExpress批量下载文献
使用这个软件,可以将上述这些下载的文献通过左上角的导入全文功能,自动智能生成相应的题录,进行管理(比如,去重,排序等)。