你不得不知道的python超级文献搜索工具(最新更新)

文献搜索对于广大学子来说真的是个麻烦事,如果你的学校购买的论文下载权限不够多,或者不在校园内,那就很头痛了。幸好,我们有Python制作的这个论文搜索工具,简化了我们学习的复杂性

Scihub

首先给大家介绍一下Sci-hub这个线上数据库,这个数据库提供了约8千万篇科学学术论文和文章下载。由一名叫亚历珊卓·艾尔巴金的研究生建立,她过去在哈佛大学从事研究时发现支付所需要的数百篇论文的费用实在是太高了,因此就萌生了创建这个网站,让更多人获得知识的想法

你不得不知道的python超级文献搜索工具(最新更新)_第1张图片

后来,这个网站越来越出名,逐渐地在更多地国家如印度、印度尼西亚、中国、俄罗斯等国家盛行,并成功地和一些组织合作,共同维护和运营这个网站。到了2017年的时候,网站上已有81600000篇学术论文,占到了所有学术论文的69%,基本满足大部分论文的需求,而剩下的31%是研究者不想获取的论文。

为什么我们需要用Python工具下载

在起初,这个网站是所有人都能够访问的,但是随着其知名度的提升,越来越多的出版社盯上了他们,在2015年时被美国法院封禁后其在美国的服务器便无法被继续访问,因此从那个时候开始,他们就跟出版社们打起了游击战

游击战的缺点就是导致scihub的地址需要经常更换,所以我们没办法准确地一直使用某一个地址访问这个数据库。当然也有一些别的方法可让我们长时间访问这个网站,比如说修改DNS,修改hosts文件,不过这些方法不仅麻烦,而且也不是长久之计,还是存在失效的可能的。

新姿势:用Python写好的API工具超方便下载论文

这是一个来自github的开源非官方API工具,下载地址为:

https://github.com/zaytoun/scihub.py

但由于作者长久不更新,原始的下载工具已经无法使用,Python实用宝典根据@lisenjor的分享,修改了源代码的下载工具。

请在 Python实用宝典 公众号后台回复 scihub,下载最新可用代码。感谢@lisenjor 的分享。

解压下载的压缩包后,使用CMD进入这个文件夹,输入以下命令(默认你已经安装好了Python)安装依赖:

pip install -r requirements.txt

然后我们就可以准备开始使用啦

这个工具使用起来非常简单,有两种方式,第一种方式你可以先在 Google 学术(搜索到论文的网址即可)或ieee上找到你需要的论文,复制论文网址如:

http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1648853

你不得不知道的python超级文献搜索工具(最新更新)_第2张图片

ieee文章

然后在scihub文件夹的scihub里新建一个文件叫download.py, 输入以下代码:

你不得不知道的python超级文献搜索工具(最新更新)_第3张图片

进入该文件夹后在cmd/terminal中运行:

python download.py

你就会发现文件成功下载到你的当前目录啦,名字为paper.pdf如果不行,多试几次就可以啦,还是不行的话,可以在下方留言区询问哦。

上述是第一种下载方式,第二种方式你可以通过在知网或者百度学术上搜索论文拿到DOI号进行下载,比如:

你不得不知道的python超级文献搜索工具(最新更新)_第4张图片

将DOI号填入download函数中:

你不得不知道的python超级文献搜索工具(最新更新)_第5张图片

下载完成后就会在文件夹中出现该文献:

你不得不知道的python超级文献搜索工具(最新更新)_第6张图片

工作原理

这个API的源代码其实非常好读懂

一、找到sci-hub目前可用的域名

首先它会在这个网址里找到sci-hub当前可用的域名,用于下载论文:

https://whereisscihub.now.sh/

你不得不知道的python超级文献搜索工具(最新更新)_第7张图片

可惜的是,作者常年不维护,该地址已经失效了,我们就是在这里修改了该域名,使得项目得以重新正常运作。

二、对用户输入的论文地址进行解析,找到相应论文

  1. 如果用户输入的链接不是直接能下载的,则使用sci-hub进行下载

  2. 如果scihub的网址无法使用则切换另一个网址使用,除非所有网址都无法使用。

你不得不知道的python超级文献搜索工具(最新更新)_第8张图片

三、下载

  1. 拿到论文后,它保存到data变量中

  2. 然后将data变量存储为文件即可

你不得不知道的python超级文献搜索工具(最新更新)_第9张图片

值得注意的是代码用到了一个retry装饰器,这个装饰器可以用来进行错误重试,作者设定了重试次数为10次,每次重试最大等待时间不超过1秒。

希望大家能妥善使用好此工具,不要批量下载,否则一旦网站被封,学生党们又要哭了。

我们的文章到此就结束啦,如果你希望我们今天的文章,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦

有任何问题都可以在下方留言区留言,我们都会耐心解答的!

PS:点击下方阅读原文可以领取源代码哦


Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

你可能感兴趣的:(你不得不知道的python超级文献搜索工具(最新更新))