利用python下载scihub成文献为PDF操作


Posted in Python onJuly 09, 2020

scihub是科研利器,这就不多说了,白嫖文献的法门,一般采用的是网页或者桌面程序,一般都会跳转到网页进行加载出文献,但是这很不方便,毕竟全手动,这里无意中看到一个写好的pip工具scihub2pdf ,于是试一下它手动威力,如果这能够成功,也就是我们以后如果想批量下载也是没问题的。

1.首先我们得安装它:

pip install scihub2pdf

2.紧接着安装npm和phantomjs,因为这个代码里面使用了phantomjs

yum install npm

切换到国内源,威力网速给力,npm是nodejs的仓库,我们类比成python的pip即可

npm config set registry https://registry.npm.taobao.org

安装 phantomjs

npm install -g phantomjs

如果顺利成功的话,就可以试一下这个工具了

3.scihub2pdf的使用

先来看一下使用帮助

[root@VM_0_9_centos ~]# scihub2pdf -h
usage: scihub2pdf [-h] [--input INPUTFILE] [--title] [--uselibgen]
   [--location LOCATION] [--txt]
 
 SciHub to PDF
 ----------------------------------------------------
 Downloads pdfs via a DOI number, article title
 or a bibtex file, using the database of libgen(sci-hub).
 
 Given a bibtex file
 
 $ scihub2pdf -i input.bib
 
 Given a DOI number...
 
 $ scihub2pdf 10.1038/s41524-017-0032-0
 
 Given a title...
 
 $ scihub2pdf --title An useful paper
 
 Arxiv...
 
 $ scihub2pdf arxiv:0901.2686
 
 $ scihub2pdf --title arxiv:Periodic table for topological insulators
 
 ## Download from list of items
 
 Given a text file like
 
 ```
 10.1038/s41524-017-0032-0
 10.1063/1.3149495
 .....
 ```
 download all pdf's
 ```
 $ scihub2pdf -i dois.txt --txt
 ```
 Given a text file like
 ```
 Some Title 1
 Some Title 2
 .....
 ```
 download all pdf's
 ```
 $ scihub2pdf -i titles.txt --txt --title
 ```
 Given a text file like
 
 ```
 arXiv:1708.06891
 arXiv:1708.06071
 arXiv:1708.05948
 .....
 ```
 download all pdf's
 ```
 $ scihub2pdf -i arxiv_ids.txt --txt
 ```
-----------------------------------------------------
 @author: Bruno Messias
 @email: messias.physics@gmail.com
 @telegram: @brunomessias
 @github: https://github.com/bibcure/sci2pdf
optional arguments:
 -h, --help  show this help message and exit
 --input INPUTFILE, -i INPUTFILE
   bibtex input file
 --title, -t  download from title
 --uselibgen  Use libgen.io instead sci-hub.
 --location LOCATION, -l LOCATION
   folder, ex: -l 'folder/'
 --txt   Just create a file with DOI's or titles

我们可以粗略看到,这个不仅仅可以doi还可批量的doi写在一个文件里,进行批量下载,更牛的是可以直接使用论文标题进行下载,这就理解为啥这里面需要想依赖phantomjs了,这玩意就是爬虫用的。

我们来试一下:

[root@VM_0_9_centos ~]# scihub2pdf 10.1063/1.4991232

注意的是,这里需要修改源码,因为用的链接不对,我们应该使用http://sci-hub.tw/而不是http://sci-hub.cc,在源码(我自己的是在vim /opt/AN/lib/python3.7/site-packages/scihub2pdf/download.py修改的,根据自己pip安装的路径进行调整)的download.py下就可找到进行修改,因为cc这个链接已经用不了的。

还可以下载arxiv上的论文,比如

[root@VM_0_9_centos ~]# scihub2pdf arxiv:2003.02355

下载时间都是有点慢的,要等一会才能成功,因为都是访问的国外的网站

以上这篇利用python下载scihub成文献为PDF操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用分治法实现求解最大值的方法
May 12 Python
python简单分割文件的方法
Jul 30 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
Python pip install如何修改默认下载路径
Apr 29 Python
什么是python的id函数
Jun 11 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
Python实现小黑屋游戏的完整实例
Jan 06 Python
python urllib和urllib3知识点总结
Feb 08 Python
python基于tkinter实现gif录屏功能
May 19 Python
Python scrapy爬取小说代码案例详解
Jul 09 #Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 #Python
pytorch 多分类问题,计算百分比操作
Jul 09 #Python
详解Python 循环嵌套
Jul 09 #Python
keras分类之二分类实例(Cat and dog)
Jul 09 #Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 #Python
Python2.x与3​​.x版本有哪些区别
Jul 09 #Python
You might like
php5.2.0内存管理改进
2007/01/22 PHP
PHP 日常开发小技巧
2009/09/23 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
在类Unix系统上开始Python3编程入门
2015/08/20 Python
python实现FTP服务器服务的方法
2017/04/11 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
端午节粽子促销活动方案
2014/02/02 职场文书
《胡杨》教学反思
2014/02/16 职场文书
出生公证书样本
2014/04/04 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
六一亲子活动感想
2015/08/07 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL