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

 更新时间:2020年07月09日 10:05:39   作者:喝粥也会胖的唐僧  
这篇文章主要介绍了利用python下载scihub成文献为PDF操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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 peewee操作sqlite锁表的问题分析

    python peewee操作sqlite锁表的问题分析

    Peewee是一种简单而小的ORM,在使用python orm 框架 peewee 操作数据库时时常会抛出以一个异常,下面我们就来分享一下具体的原因以及解决办法吧
    2023-08-08
  • Python读写Redis数据库操作示例

    Python读写Redis数据库操作示例

    Redis是一个开源的非关系型数据库,它采用C语言编写,是一个key-value存储系统,它存储的value类型很多,包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希)
    2014-03-03
  • Python截取字符串的简单方法实例

    Python截取字符串的简单方法实例

    字符串切片也就是截取字符串,取子串,下面这篇文章主要给大家介绍了关于Python截取字符串的简单方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 对Pyhon实现静态变量全局变量的方法详解

    对Pyhon实现静态变量全局变量的方法详解

    今天小编就为大家分享一篇对Pyhon实现静态变量全局变量的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python图像滤波处理操作示例【基于ImageFilter类】

    Python图像滤波处理操作示例【基于ImageFilter类】

    这篇文章主要介绍了Python图像滤波处理操作,结合实例形式分析了Python基于ImageFilter类实现的滤波处理相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python 文件处理注意事项总结

    Python 文件处理注意事项总结

    这篇文章主要介绍了Python 文件处理注意事项总结的相关资料,需要的朋友可以参考下
    2017-04-04
  • pydantic进阶用法示例详解

    pydantic进阶用法示例详解

    这篇文章主要为大家介绍了pydantic进阶用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python中的asyncio性能分析

    Python中的asyncio性能分析

    这篇文章主要介绍了Python中的asyncio性能分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 基于python实现对文件进行切分行

    基于python实现对文件进行切分行

    这篇文章主要介绍了基于python实现对文件进行切分行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python实现阶乘的三种方法

    python实现阶乘的三种方法

    阶乘是基斯顿·卡曼于 1808 年发明的运算符号,是数学术语,一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1,本文给大家介绍了python实现阶乘的三种方法,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论