最近在SCIHUB上下载文献,发现一个比较烦恼的问题:需要先在文献检索的网站上找到所需文献的DOI,再将DOI复制到SCIHUB才能下载。
因此作者尝试通过油猴插件来实现在任意文献检索网站(只要能显示DOI即可)快速跳转到SCIHUB进行下载PDF的目的。
首先在任意一个文献检索网站(这里以IEEE为例)找一篇文献
可以获得它的DOI为:10.1109/IEEESTD.2009.5431217
将其复制到SCIHUB,获得了如下的网址。可以看到,网址的结构就是sci-hub.se/+DOI的组合。
现在我们来编写脚本。
以百度学术为例,在页面中虽然有显示下载途径,但是需要跳转到对应网站,才能进行下载,而且还会有可能要求登录账号。
先展示编写好后的效果,点击DOI后直接跳转到对应的PDF页面:
教程开始:
右键DOI的位置,点击检查
然后可以在右侧的开发者工具中看到这一行
那么我们在控制台发送命令
document.querySelector("div.doi_wr p.kw_main")
会获得如下结果:
<p class="kw_main" data-click="{'button_tp':'doi'}"> 10.1063/1.2437069 </p>
证明我们选择器正确,接下来我们修改该p标签下的内容,使其变成如下内容。这样DOI就可以变成超链接直接指向我们需要的文献pdf链接了。
<p class="kw_main" data-click="{'button_tp':'doi'}"> <a href="https://sci-hub.se/10.1063/1.2437069">10.1063/1.2437069<\a> </p>
接下来编写脚本代码:
// ==UserScript==
// @name 快速下载文献
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://xueshu.baidu.com/usercenter/paper/*
// @icon https://www.google.com/s2/favicons?domain=baidu.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
//选择器获取DOI位置
var DOI_Text = document.querySelector("div.doi_wr p.kw_main");
//获取DOI的id
var DOI_id = DOI_Text.innerText;
//生成下载链接
var DOI_download = "https://sci-hub.se/"+DOI_id;
//调试输出
console.log(DOI_download)
//重写p标签内容
DOI_Text.innerHTML = `<a href="`+DOI_download+`" title="点击我跳转到下载页面">`+DOI_id+`<\a>`
})();
保存后,重写刷新页面,即可看到DOI后面的字已经变成了蓝色的超链接,并可以点击。
(注:有些时候SCIHUB没有对应资源,只能另寻他法去下文献了)
其他任何能够显示文献DOI的检索网站也同理,通过相似的方法,也可以设计出对应网站的插件,方便自己下载。
至于如何下载和安装油猴插件,有很多相关的帖子,就不赘述了。
本文含有隐藏内容,请 开通VIP 后查看