cnki-download
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCNKI Paper Download (文献下载)
CNKI论文下载(文献下载)
Prerequisites
前置条件
User must be logged in to CNKI with download permissions.
用户必须已登录CNKI并拥有下载权限。
Arguments
参数
$ARGUMENTS$ARGUMENTSSteps
步骤
1. Navigate (if URL provided)
1. 跳转页面(若提供URL)
If URL provided: use to go to the URL directly (no wait_for needed — Step 2 handles waiting).
navigate_pageImportant: Always use instead of clicking links on the search results page. Clicking opens a new tab and wastes 3 extra tool calls ( + + ).
navigate_pagelist_pagesselect_pagetake_snapshot若提供了URL:直接使用跳转至该URL(无需等待——步骤2会处理等待逻辑)。
navigate_page重要提示:请始终使用,而非点击搜索结果页的链接。点击链接会打开新标签页,并额外消耗3次工具调用( + + )。
navigate_pagelist_pagesselect_pagetake_snapshot2. Check status and download (single async evaluate_script)
2. 检查状态并下载(单次异步evaluate_script调用)
Replace with or :
FORMAT"pdf""caj"javascript
async () => {
// Wait for page load
await new Promise((r, j) => {
let n = 0;
const c = () => {
if (document.querySelector('.brief h1')) r();
else if (++n > 30) j('timeout');
else setTimeout(c, 500);
};
c();
});
// Captcha check
const cap = document.querySelector('#tcaptcha_transform_dy');
if (cap && cap.getBoundingClientRect().top >= 0) {
return { error: 'captcha', message: 'CNKI 正在显示滑块验证码。请在 Chrome 中手动完成拼图验证。' };
}
const format = "FORMAT"; // "pdf" or "caj"
// Check download links
const pdfLink = document.querySelector('#pdfDown') || document.querySelector('.btn-dlpdf a');
const cajLink = document.querySelector('#cajDown') || document.querySelector('.btn-dlcaj a');
// Check login status
const notLogged = document.querySelector('.downloadlink.icon-notlogged')
|| document.querySelector('[class*="notlogged"]');
if (notLogged) {
return { error: 'not_logged_in', message: '下载需要登录。请先在 Chrome 中登录知网账号。' };
}
const title = document.querySelector('.brief h1')?.innerText?.trim()?.replace(/\s*网络首发\s*$/, '') || '';
if (format === 'pdf' && pdfLink) {
pdfLink.click();
return { status: 'downloading', format: 'PDF', title };
} else if (format === 'caj' && cajLink) {
cajLink.click();
return { status: 'downloading', format: 'CAJ', title };
} else if (pdfLink) {
pdfLink.click();
return { status: 'downloading', format: 'PDF', title };
} else if (cajLink) {
cajLink.click();
return { status: 'downloading', format: 'CAJ', title };
}
return { error: 'no_download', message: '未找到下载链接', hasPDF: !!pdfLink, hasCAJ: !!cajLink };
}将替换为或:
FORMAT"pdf""caj"javascript
async () => {
// Wait for page load
await new Promise((r, j) => {
let n = 0;
const c = () => {
if (document.querySelector('.brief h1')) r();
else if (++n > 30) j('timeout');
else setTimeout(c, 500);
};
c();
});
// Captcha check
const cap = document.querySelector('#tcaptcha_transform_dy');
if (cap && cap.getBoundingClientRect().top >= 0) {
return { error: 'captcha', message: 'CNKI 正在显示滑块验证码。请在 Chrome 中手动完成拼图验证。' };
}
const format = "FORMAT"; // "pdf" or "caj"
// Check download links
const pdfLink = document.querySelector('#pdfDown') || document.querySelector('.btn-dlpdf a');
const cajLink = document.querySelector('#cajDown') || document.querySelector('.btn-dlcaj a');
// Check login status
const notLogged = document.querySelector('.downloadlink.icon-notlogged')
|| document.querySelector('[class*="notlogged"]');
if (notLogged) {
return { error: 'not_logged_in', message: '下载需要登录。请先在 Chrome 中登录知网账号。' };
}
const title = document.querySelector('.brief h1')?.innerText?.trim()?.replace(/\s*网络首发\s*$/, '') || '';
if (format === 'pdf' && pdfLink) {
pdfLink.click();
return { status: 'downloading', format: 'PDF', title };
} else if (format === 'caj' && cajLink) {
cajLink.click();
return { status: 'downloading', format: 'CAJ', title };
} else if (pdfLink) {
pdfLink.click();
return { status: 'downloading', format: 'PDF', title };
} else if (cajLink) {
cajLink.click();
return { status: 'downloading', format: 'CAJ', title };
}
return { error: 'no_download', message: '未找到下载链接', hasPDF: !!pdfLink, hasCAJ: !!cajLink };
}3. Report
3. 结果反馈
Based on JS result:
- → "PDF 下载已触发:{title}。请在 Chrome 下载管理器中查看。"
status: downloading - → tell user to log in
error: not_logged_in - → tell user to solve captcha
error: captcha
根据JavaScript执行结果:
- → 「PDF下载已触发:{title}。请在Chrome下载管理器中查看。」
status: downloading - → 告知用户需要登录
error: not_logged_in - → 告知用户需要完成验证码验证
error: captcha
Tool calls: 1–2 (navigate_page if URL + evaluate_script)
工具调用次数:1–2次(若提供URL则调用navigate_page + evaluate_script)
Verified selectors
已验证的选择器
| Element | Selector | Notes |
|---|---|---|
| PDF download | | |
| CAJ download | | |
| Download area | | parent |
| Not logged in | | |
| Title | | strip trailing "网络首发" |
| 元素 | 选择器 | 说明 |
|---|---|---|
| PDF下载按钮 | | |
| CAJ下载按钮 | | |
| 下载区域 | | 父级 |
| 未登录状态 | | |
| 论文标题 | | 移除末尾的「网络首发」字样 |
Captcha detection
验证码检测
Check element's .
Only active when (visible). Pre-loaded SDK sits at .
#tcaptcha_transform_dygetBoundingClientRect().top >= 0top >= 0top: -1000000px检查元素的属性。
仅当(元素可见)时,验证码处于激活状态。预加载的SDK默认位于位置。
#tcaptcha_transform_dygetBoundingClientRect().top >= 0top >= 0top: -1000000px