Not Only an Archive

0%

导出 CNKI 文献

CNKI 是一个很棒的网站,查找论文非常迅速,通常每次只要花五六秒,关键词匹配挺精确的,每次找论文只需要往后翻几页就可以了,对论文默认使用自家强大的 CAJ 格式文件下载。

所以呢,为了方便查找与导出文献,希望能做到如下几点:

  • 快速查找
  • 导出文献
    • 生成 PDF 文件
    • 导出文献元数据(BibTeX 格式)到文献管理器中

快速查找

使用命令行界面

来看看万能的 GitHub 有没有这个工具

它的原理在这里:【实战】利用爬虫实现知网高级检索后的文献预览和下载(逻辑分析) — Cyrus Ren

不过,作者已经好久没有更新代码了……

其他方法?

也可以直接用 Google Scholar 搜索……

除此之外,本人就没有想到其他方法了……

导出文献

生成 PDF 文件

生成 PDF 文件有几种思路:

  • 将 CAJ 格式转换为 PDF 格式
  • 直接下载 PDF 格式的论文

将 CAJ 格式转换为 PDF 格式

这里有个佛系工具

顺便一提,它的证书是 GLWTPL 证书(Good Luck With That Public License),意思就是

If you have that feeling about your code...

When I wrote this, only God and I understood what I was doing.

Now, only God knows.

...think no further and include this LICENSE to your project!

祝好运。


这个方法最大的难点是,CAJ 格式是个私有格式(而 PDF 是开源的),对它的逆向工程很难做。

有兴趣的同学可以看看它的 Wiki 里面谈及的 CAJ 格式的数据结构以及 Issue 区里面的讨论。

直接下载 PDF 格式文件

比较靠谱的方法是,下载官方提供的 PDF 文件,那么问题来了,上哪找呢?

经过一番分析,可以发现:

比如这篇文献的 CAJ 文档下载地址

1
https://epub.cnki.net/kns/download.aspx?filename=2oVQzt2TBJjStNnSJplUGlmTvhVTFhlZkx0ZygkSppGVHBDUrhlVro0LlVVSvdmU2kVYH1Eb6RGcpRVRXpXbkBTQrtWaqR2K2czKRpEO2ETQwBnWLFmWRdWVxlHe1YkNvU3MVZEZNVDaaVXcnN2Lxtkdi90cx1ET&tablename=CJFD2013

下载它的 PDF 文档需要

1
https://epub.cnki.net/kns/download.aspx?filename=2oVQzt2TBJjStNnSJplUGlmTvhVTFhlZkx0ZygkSppGVHBDUrhlVro0LlVVSvdmU2kVYH1Eb6RGcpRVRXpXbkBTQrtWaqR2K2czKRpEO2ETQwBnWLFmWRdWVxlHe1YkNvU3MVZEZNVDaaVXcnN2Lxtkdi90cx1ET&tablename=CJFD2013&dflag=pdfdown

对比发现,只需加入一个 dflag=pdfdown 就可以下载 PDF 文档了。

这里就有个 Tampermonkey 脚本可以搞定这些事情

导出文献元数据

导出文献元数据,有几种思路:

  • 使用 CNKI 提供的方法
  • 有了文献标题、作者等数据之后直接生成 BibTeX

使用 CNKI 提供的方法

来看看 CNKI 提供些什么方法:

CNKI 文献可导出格式

再看自定义能自定义什么

CNKI 文献导出格式自定义

emmmmm,看上去都不是想要的。

好吧,那么看看可不可以先导出其中某一个,然后再转成 BibTeX,于是这里就有个工具

直接生成 BibTeX

文献的元数据很容易获取到(手打也算),所以,直接生成 BibTeX 应该不算很困难。

然后我试了一下文献管理器 Zotero,它原先支持 CNKI。

新版页面在导出文献时,可能会有些问题。所以,一个 workaround 是使用旧版主页,文献的域名看上去是这样的 epub.cnki.net(新版是 kns.cnki.net)。

而如果使用的是镜像/代理访问(即网页域名不是 *.cnki.net)会失败(见这个 Issue)。

不过好消息是,这个 bug 已经在修了,进展可见

参考资料

后记:终极解决方法

使用 Google Scholar。