利用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人人网登录应用实例
Sep 26 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
python实现彩票系统
Jun 28 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
pytorch标签转onehot形式实例
Jan 02 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Python random模块的使用示例
Oct 10 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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
在PHP的图形函数中显示汉字
2006/10/09 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP单链表的实现代码
2016/07/05 PHP
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Selenium定位元素操作示例
2018/08/10 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
欧克利英国官网:Oakley英国
2019/08/24 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
卫生巾广告词
2014/03/18 职场文书
医学生求职信
2014/07/01 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
原料仓管员岗位职责
2015/04/01 职场文书