在中国知⽹下载PDF格式的学位论⽂
在中国知⽹下载 PDF 格式的学位论⽂
中国知⽹真是奇怪,⾮要⾃⼰搞出⼀个封闭的 CAJ 格式,学位论⽂还不提供 PDF 的格式,逼着⼈们只能去下载它们的 CAJViewer,最不可忍受的是竟然没有 Linux 下的版本!
但是众的智慧是⽆穷的,最近发现,通过⼀个 userscript 就可以给学位论⽂页⾯加上“PDF 下载”的按钮。
所谓 userscript,就是⼀个浏览器插件,能够动态地修改页⾯内容。在 Chrome 浏览器中,需要安装 tampermonkey 插件来管理userscripts,FireFox 中可以使⽤ Greasemonkey。
脚本的内容可以从这⾥获取。原本的域名是 ,但这个⽹站似乎挂了很久了,不过镜像站 ⼀直可⽤。
代码
为了保险,将脚本完整内容复制在此:
// ==UserScript==
// @id            CNKI-PDF-Special
// @name          CNKI 中国知⽹ PDF 全⽂下载(特制版)
// @version        1.25
// @namespace      yuelong.info
// @author        YUE Long
// @updateURL      /scripts/a.js
// @description    ①点击 CNKI 检索结果界⾯中的下载按钮可以直接下载 PDF 格式⽂献;
//                ②在硕⼠/博⼠学位论⽂详细信息界⾯添加“PDF下载”按钮。
//                ※特制版功能:在检索页⾯中的硕⼠/博⼠论⽂默认下载 CAJ ⽂件。
// @include        *ki/*
// @include        *ki.*/*
/
/ @run-at        document-idle
// ==/UserScript==
var allLis, thisLi, newLi, aPDF, allLinks, thisLink, pageType;
pageType = true;
allLinks = document.evaluate(
'//a[@href]',
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
allLis = document.evaluate(
"//li[@class]",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
if (allLis) {
for (var i = 0; i < allLis.snapshotLength; i++) {
thisLi = allLis.snapshotItem(i);
if (Attribute("class").indexOf("readol") !== -1) {
pageType = false;
newLi = ateElement('li');
newLi.setAttribute("class","pdf");
aPDF = '<a target="_blank" href="' +
thisLi.place("&dflag=readonline","&dflag=pdfdown") +
'">PDF下载</a>';
newLi.innerHTML=aPDF;
thisLi.parentNode.insertBefore(newLi, Sibling);
}
}
if (Attribute("class").indexOf("cajNew") !== -1) {
pageType = false;
}
}
}
if (pageType) {
for (var i = 0; i < allLinks.snapshotLength; i++) {
thisLink = allLinks.snapshotItem(i);
if (thisLink.href &&
thisLink.href.indexOf("download.aspx?filename=") != -1 &&
thisLink.href.indexOf("&dflag") == -1 &&
thisLink.href.indexOf("=CMFD") == -1 &&
thisLink.href.indexOf("=CDFD") == -1
) {
thisLink.href = thisLink.href + "&dflag=pdfdown";
}
if (thisLink.href &&
thisLink.href.indexOf("download.aspx?filename=") != -1 &&
thisLink.href.indexOf("&dflag") == -1 &&
(thisLink.href.indexOf("=CMFD") !== -1 || thisLink.href.indexOf("=CDFD") !== -1 )
) {
thisLink.href = thisLink.href + "&dflag=nhdown";
}
}
}
把这段代码添加到 Tampermonkey 中,再访问知⽹,点开⼀个学位论⽂的页⾯,就能从上⾯看到“PDF 下载”的按钮了。就像这样:
学位论⽂可以下载 PDF 格式
关于 Userscript
UserScript 就是⼀段 JavaScript 代码,当⼀个页⾯加载完成之后,这段 JavaScript 就会⾃动执⾏,效果就和在调试⼯具的终端⾥执⾏JavaScript ⼀样。因此,Userscript 能够访问操作 DOM 节点,能使⽤页⾯引⽤的所有库。
UserScript 通常由浏览器的插件来管理,例如 FireFox 有 Greasemonkey,Webkit/Blink 内核的浏览器则有 Tampermonkey,⽽且这些⼯具⽀持的 UserScripts 接⼝相同,同样的 UserScript 在不同的管理插件下执⾏效果相同。
⾄于代码开头的那⼀段注释,其实就是这个 Userscript 的元数据,其中描述了代码的名称、版本、作者,以及作⽤于哪些⽹页等等。
注:这⾥是这段带码的原始出处。
这个脚本可以在能够下载CAJ⽂件的情况下,提供PDF⽂件的下载链接,这下不⽤wine CAJViewer了,Ubuntu/Linux⽤户福⾳
主要实现了⼀下两个功能:
在⽂献检索结果列表界⾯中,点击或后,可以直接下载 PDF ⽂件,⽽⾮ CAJ/NH ⽂件;
tampermonkey
在博⼠/硕⼠学位论⽂详细信息界⾯添加了“PDF下载”按钮,实现了博⼠/硕⼠学位论⽂的 PDF 下载功能,如下图所⽰。
脚本使⽤⽅法:在 Firefox 中先安装 Greasemonkey 或 Scriptish 扩展后,再安装脚本;在 Chrome 中请参考这篇⽂章(wu.nerd注:Chrome直接拖到Extensio ns页⾯即可);在 Safari 中借助 Ninjiakit 使⽤(感谢 Heart7)。IE 尚不能使⽤。
UPDATE(2013/04/06):感谢 Troy 的建议,我制作了⼀个特制版的脚本。其特别之处在于可以在检索页⾯中的硕⼠/博⼠论⽂默认下载 CAJ/NH ⽂件,避免了 P DF ⽂件没有⽬录所带来的遗憾。
P.S. 这段代码实现 PDF 下载的原理并不⾼神,只是修改了下载链接,改了⼀些 GET 参数。因此可以推断,CAJ 格式实际上与 PDF ⾮常相似,知⽹的服务器可以实现格式的转换。这样转出来的 PDF 是⽂字版,虽然没有 CAJ 中的⽬录,基本需求已经完全满⾜。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。