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

Scihub

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

后来,这个网站越来越出名,逐渐地在更多地国家如印度、印度尼西亚、中国、俄罗斯等国家盛行,并成功地和一些组织合作,共同维护和运营这个网站。到了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

ieee文章

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

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

python download.py

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

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

将DOI号填入download函数中:

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

工作原理

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

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

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

https://whereisscihub.now.sh/

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

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

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

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

三、下载

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

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

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

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

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

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

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


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

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

  1. python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路

    原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...

  2. 你可能不知道的Python面试秘籍 干货满满(附带参考答案)上篇

    Q1.Python中的列表和元组有什么区别? 你可能不知道的Python面试秘籍 干货满满(附带参考答案)上篇 Q2.Python的主要功能是什么? Python是一种解释型语言.与C语言等语言不同, ...

  3. 超级文献下载工具scihub-cn,教您一行命令下载文献

    导言 项目地址:GitHub - Ckend/scihub-cn: 国内环境下可用的scihub论文下载器 该项目能做啥,看图就明白了.一句话即可下载所需文献. 1.准备 开始之前,确保已有Pytho ...

  4. 微软产品经理:你不能不知道的 6 个 Web 开发者工具

    使用开发者工具是开发人员的日常,但多数人往往只使用其中的一小部分,很多功能其实都无人问津.在微软 Edge 项目部担任开发者工具首席产品经理的 Christian Heilmann 认为,开发者工具正 ...

  5. Microsoft Edge:你不能不知道的6个Web开发者工具

    微软产品经理:你不能不知道的6个Web开发者工具 作者|Christian Heilmann 译者|核子可乐 策划|燕珊 多数开发者只有实在没有办法(在谷歌.Stack Overflow 乃至其他社交 ...

  6. python到底有多少个库_11个你可能不知道的Python库

    现在有如此之多的Python包,几乎没有人能够全盘掌握. 光是PyPI就可单独列出47,000个包! 近日,听到很多数据科学家切换到Python的消息,我不由地想到,虽然他们得到了pandas.sci ...

  7. 你所不知道的 Python 冷知识!(建议收藏)

    01. 省略号也是对象 ... 这是省略号,在Python中,一切皆对象.它也不例外. 在 Python 中,它叫做 Ellipsis . 在 Python 3 中你可以直接写-来得到这玩意. > ...

  8. Python可以做什么?你所不知道的Python——生活中的奇妙用途

    大家都知道Python可以用来做数据分析.爬虫,甚至是人工智能,但却觉得那些东西比较遥远,会担心孩子学Python为时过早. Python 其实Python并不只是能做一些很专业.高端的应用,它在生活 ...

  9. python可以引流吗_python能干嘛?你所不知道的Python有趣用途(上)

    前言 很多人都觉得Python虽然好学,但却不晓得如何将其应用到生活中,或是只知道Python可以拿来做「数据分析」.「爬虫」.甚至是「人工智慧」,但却觉得那些东西离自己很遥远 (尤其是初学者,经常会 ...

最新文章

  1. 快速实现dNet三层架构项目图解
  2. Python之面向对象四
  3. 4种常见的 PHP 设计模式
  4. 2sum、3sum、4sum以及任意连续的数的和为sum、任意连续或者不连续的数的和为sum...
  5. 正态分布的前世今生(1)
  6. windows下springboot集成redis
  7. 组策略复制失败排错思路实例
  8. 杭电计算机组成原理教材答案,杭电计算机组成原理包建课后作业答案详解.doc...
  9. linux内核奇遇记之md源代码解读之二
  10. msu文件无法运行_如何打开msu文件
  11. 如何成为一名数据分析师
  12. 【0723】自动化运维——saltstack
  13. admi后台 vue_vue-ele-admin后台管理系统框架__布局
  14. 2021-2025年中国共享Web托管服务行业市场供需与战略研究报告
  15. STM32驱动BMP280模块
  16. 关于沉没成本的座谈会
  17. 衡量软件交付性能的4个指标
  18. 厘米与像素的单位转换
  19. 百度地图行政区划边界线获取,只要界线,遮罩层透明设置方法
  20. 弹性文件服务(Scalable File Service,SFS)

热门文章

  1. CentOS 的安装
  2. 【K8S实战】-超详细教程(一)
  3. Mac新手的使用笔记_从Windows到Mac
  4. 体模Phantom —— 用于磁共振MRI质控
  5. AutoLisp从入门到放弃(九)
  6. lisp 天正源码_Lisp源码200例
  7. 2006 CCF NOIP普及组复赛 第1题:明明的随机数 <- 桶排序
  8. 闲鱼如何通过Push升级,更懂你?
  9. SpringCloud整合log4j2总结
  10. 小程序---调用后端接口的方法