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

时间:2021-07-15 23:03:41作者:夏又天

本内容主要为您介绍利用python下载scihub成文献为PDF操作的经验知识,经过上千万码农友验证可行,为您解决利用python下载scihub成文献为PDF操作的问题,下面即将揭晓答案。

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

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

注意的是,这里需要修改源码,因为用的链接不对,我们应该使用而不是,在源码(我自己的是在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下载文件时显示下载进度的方法

    本文实例讲述了python下载文件时显示下载进度的方法。分享给大家供大家参考。具体分析如下: 将这段代码放入你的脚本中,类似:urllib.urlretrieve(getFile, saveFile, reporthook=report) 第三个参数如下面的函数定义report,urlretrieve下载文件时会实时回调report函数,显示下载进度 def report(count, blockSize, totalSize): percent = int(count*blockSize*100/totalSize) s

  • Python下载懒人图库JavaScript特效

    这是一个简单的Python脚本,主要从懒人图库下载JavaScript特效模板,在脚本中使用了gevent这个第三方库,使用的时候需要先安装。 #!/usr/bin/python # -*- coding: utf-8 -*- import urllib,os,sys import gevent,re from gevent import monkey from bs4 import BeautifulSoup gevent.monkey.patch_socket() Description:Python 爬虫抓取懒人图库的JS脚本模板 Auth

  • 使用Python下载歌词并嵌入歌曲文件中的实现代码 python如何导入音乐

    使用python扫描本地音乐并下载歌词 这次这个真的是干货哦,昨晚弄了半晚上,,,,从8点吃完饭就开始写,一直到了快12点才弄好,,,新手,伤不起呀。。。。 先简单的说下吧,百度提供了一个音乐搜索的api,你想百度请求类似于 http://box.zhangmen.baidu.com/x op=12 count=1 title=最佳损友$$陈奕迅$$$$ 的地址,百度会给你返回一段xml,如下所示 This XML file does not appear to have any style i

  • Python下载指定页面上图片的方法 python载入图片

    Python下载指定页面上图片的方法  更新时间:2016年05月12日 09:12:12   作者:charles_kao   这篇文章主要介绍了Python下载指定页面上图片的方法,涉及Python的正则匹配、URL及文件操作相关技巧,需要的朋友可以参考下

  • python下载图片实现方法(超简单) 用python做一张图片

    我们有时候会需要在网上查找并下载图片,当数量比较少的时候,点击右键保存,很轻松就可以实现图片的下载,但是有些图片进行了特殊设置,点击右键没有显示保存选项,或者需要下载很多图片,这样的情况,写一段Python爬虫代码就可以轻松解决! 一、页面抓取 #coding=utf-8 import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html html = getHtml("https://tieba.baidu.

  • python下载文件记录黑名单的实现代码

    ftp_path = '/GBCC/' # ftp目录 local_path = "C:\F\python\pythonwangtest\wyjj2\\" #本地的目录 # 连接FTP def ftpconnect(): ftp = FTP() ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息 ftp.connect(ftp_server, 21) # 连接 ftp.login(username, password) # 登录,如果匿名登录则用空串代替即可 return ftp # 获取当前的年月日时分秒 def g

  • Python下载网络小说实例代码 python爬小说代码

    #处理的字符的确是gbk的,但是其中夹杂的部分特殊字符, #是gbk编码中所没有的如果有些特殊字符是GB18030中有的,但是是gbk中没有的。 #则用gbk去解码,去所不支持的字符,也比如会出错。 #所以,此种情况,可以尝试用和当前编码(gbk)所兼容的但所包含字符更多的编码(gb18030)去解码,或许就可以了。 #allHtml = resp.read().decode('gbk')# allHtml = resp.read().decode('gb18030')# textSoup = BeautifulSoup(allHtml) #章节名 s

  • Python下载网络文本数据到本地内存的四种实现方法示例

    本文实例讲述了Python下载网络文本数据到本地内存的四种实现方法。分享给大家供大家参考,具体如下: import urllib.request import requests from io import StringIO import numpy as np import pandas as pd 下载网络文件,并导入CSV文件作为numpy的矩阵 # 网络数据文件地址 url = "http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/p

  • python下载微信公众号相关文章 微信软件下载公众号

    本文实例为大家分享了python下载微信公众号相关文章的具体代码,供大家参考,具体内容如下 目的:从零开始学自动化测试公众号中下载“pytest"一系列文档 1、搜索微信号文章关键字搜索 2、对搜索结果前N页进行解析,获取文章标题和对应URL 主要使用的是requests和bs4中的Beautifulsoup Weixin.py import requests from urllib.parse import quote from bs4 import BeautifulSou

  • 详解Python下载图片并保存本地的两种方式 python怎么把图片保存在文件夹

    一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码: import os,stat import urllib.request img_url="https://timgsa.baidu.com/timg image quality=80 size=b9999_10000 sec=1516371301 di=d99af0828bb301fea27c2149a7070" \ "d44 imgtype=jpg er=1 src=http%3A%2F%2Fupload.qianhuaweb.co