利用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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python守护线程用法实例
Jun 23 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python中cPickle类使用方法详解
Aug 27 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
浅析Python 条件控制语句
Jul 15 Python
python使用列表的最佳方案
Aug 12 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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写MySQL数据 实现代码
2009/06/15 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
Symfony控制层深入详解
2016/03/17 PHP
php微信开发自定义菜单
2016/08/27 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
canvas知识总结
2017/01/25 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python实现计算最小编辑距离
2016/03/17 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python LMDB库的使用示例
2021/02/14 Python
linux面试题参考答案(11)
2016/11/26 面试题
中层干部培训方案
2014/06/16 职场文书
国际金融专业自荐信
2014/07/05 职场文书
集体生日活动方案
2014/08/18 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
婚宴致辞
2015/07/28 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
如何正确理解python装饰器
2021/06/15 Python