美文网首页
【【python实战】根据DOI号批量下载参考文献

【【python实战】根据DOI号批量下载参考文献

作者: Hobbit的理查德 | 来源:发表于2021-01-18 17:12 被阅读0次

在上一篇中,写了如何获取某篇英文文献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,吃个饭回来就下载完了)。

get_paper.gif

总体来说,如果是要开始了解某个领域,批量下载某个领域的相关文献的话,选择某篇近期(近期的普遍有DOI号)综述、元分析或者Handbook的参考文献。然后,就可以根据DOI批量下载相关文献啦~

需要注意的是:最开始没有设置随机睡眠时间,下了一会儿,就再也下不了了。隔了第二天,设置了随机睡眠时间后,就可以批量下载了。

另外,还有个小技巧,之前有介绍过NoteExpress
如何用NoteExpress批量下载文献

使用这个软件,可以将上述这些下载的文献通过左上角的导入全文功能,自动智能生成相应的题录,进行管理(比如,去重,排序等)。

NoteExpress.png

相关文章

网友评论

      本文标题:【【python实战】根据DOI号批量下载参考文献

      本文链接:https://www.haomeiwen.com/subject/jvpxzktx.html