Skip to content
This repository was archived by the owner on Nov 12, 2025. It is now read-only.

Latest commit

 

History

History
79 lines (64 loc) · 3.65 KB

File metadata and controls

79 lines (64 loc) · 3.65 KB

CNKI 文献数据库

类型 辑刊 报纸 硕博 会议 期刊 年鉴
目标形式 CCJD CCND CDMD CIPD CJFD CYFD
子类 ... ... CMFD 硕士
CDFD 博士
CPFD 国内
CPVD 视频
IPFD 国际
CJFQ ...
基础教育 ... CFND CFMD CFPD CFJD
CFJW 完中
CFJG 高中
CFJC 初中
CFJX 小学
...
法律 ... CLKN CLKM 硕士
CLKD, CLKB 博士
CLKP CLKJ ...
chkdx ... CHKJ CDMH CHKP CHKJ BSFD
ds ... ZKZN ZKZM 硕士
ZKZD 博士
ZKZP 国内
ZKZI 国际
ZKZJ ZKZY
hypt01 ... DXXN DXXM 硕士
DXXD 博士
DXXP 国内 DXXJ DXXY
hypt02 ... WKDN WKDM 硕士
WKDD 博士
WKDP 国内
WKDI 国际
WKDJ WKDY
hypt03 ... GDKN GDKM 硕士
GDKD 博士
GDKP 国内
GDKI 国际
GDKJ GDKY
jw ... NTCN NTCM 硕士
NTCD 博士
NTCP 国内
NTCI 国际
NTCJ NTCY
ste ... SCGN SCGM 硕士
SCGD 博士
SCGP 国内
SCGI 国际
BNJK
SCGJ
SCGY
snqk ... ... ... ... CACM ...
web01 ... JNGN JNGM 硕士
JNGD 博士
JNGP 国内
JNGI 国际
JNGJ JNGY
web02 ... DJSN DJSM 硕士
DJSD 博士
DJSP 国内 JYSJ
DJSJ
...
web03 ... LRIN LRIM 硕士
LRID 博士
LRIP 国内
LRII 国际
LRIJ LRIY
... ... ... ... ... ... ...

目前脚本只计划适配以上6类文献,相关dbcode来自知网文献页、搜索页。部分dbcode在oversea.cnki.net中直接使用可能会报错。脚本会将各种(疑似)dbcode变体转换为CCJD, CCND, CDMD, CIPD, CJFD, CYFD之一。

CCJD(辑刊)在非文献知网节(如kns.cnki.net, oversea.cnki.net, www.cnki.net)站点可能会使用CJFD(期刊)的形式,如https://www.cnki.com.cn/Article/CJFDTOTAL-ZXTG202001007.htm,但部分页面只能使用CCJD。

不支持的类型

dbcode 属性
CCVD 教学视频
CISD 标准
CLKLP 法律法规
CPVD 会议视频
SCOD 专利
SCPD 中国专利
SMSD 标准题录
SNAD 成果
SOPD 海外专利
... ...

READ并不算dbcode,但对于知网百科的部分文章如https://xuewen.cnki.net/read-R2012030760000385.html,链接格式与正常文献相同,脚本会将read提取为dbcode,故将其排除。

脚本中对dbcode的转换

let fileIDObj = { raw: [dbcode.toUpperCase(), filename.toUpperCase()] };
dbcode = fileIDObj.raw[0].replace(/^[A-Z]+_([A-Z]+)$/, '$1');
const cmnDB = ['CCJD', 'CCND', 'CDMD', 'CIPD', 'CJFD', 'CYFD'];
if (!cmnDB.includes(dbcode)) {
	const oddDB = ['BNJK', 'BSFD', 'CACM', 'CDMH', 'CLKB', 'IPFD'],
		badDB = ['CCVD', 'CISD', 'CLKLP', 'CPVD', 'READ', 'SCOD', 'SCPD', 'SMSD', 'SNAD', 'SOPD'];
	if (oddDB.indexOf(dbcode) === badDB.indexOf(dbcode)) {
		let dbKey = dbcode.replace(/^C(\w)?F(\w)\w*$/, 'to$2$1').replace(/^\w+(\w)$/, '$1');
		const dbKeys = ['D', 'I', 'J', 'M', 'N', 'P', 'Y'],//博士 国际会议 期刊 硕士 报纸 国内会议 年鉴
			key2cmn = ['CDMD', 'CIPD', 'CJFD', 'CDMD', 'CCND', 'CIPD', 'CYFD'];
		dbcode = key2cmn[dbKeys.indexOf(dbKey)] || 'BAD-DB';
	} else {
		const odd2cmn = ['CJFD', 'CYFD', 'CJFD', 'CDMD', 'CDMD', 'CIPD'];
		dbcode = odd2cmn[oddDB.indexOf(dbcode)] || 'BAD-DB';
	}
	console.debug('[CNKI-Redirect] Convert dbcode from %s to %s.', fileIDObj.raw[0], dbcode);
}

修改脚本目标链接

脚本不需要额外的修改就能正常运行,没有特殊需求就不要给自己制造麻烦

Details

脚本在获取到dbcode和filename以后通过GenerateKcmsUrl函数生成目标链接数组,可以修改此函数来改变最终到达的链接(例如使用所在机构建立的知网本地镜像)。

注意:

  1. 需要一定的动手能力自己尝试
  2. 跳转至其他知网站点可能导致无限循环
  3. 跳转至错误页面可能无法自动回到原页面