影刀RPA新手教程学术文献采集完全指南——知网维普文献信息批量下载与整理作者林焱一、认识影刀与安装配置读研的时候最痛苦的就是文献综述。打开知网、维普、万方一个一个搜索关键词一条一条复制标题、作者、摘要、关键词再手动整理成Excel。导师要求做50篇以上文献综述时我光整理文献信息就花了两周。后来写毕业论文时我用影刀搭了一套文献信息自动采集流程只用了半天就跑完了200篇论文的信息采集和数据整理。影刀安装Windows系统下载安装包默认路径一键安装。装完后重点做两件事一是装Chrome扩展编辑器「工具」-「浏览器扩展管理」二是开启Python「设置」-「Python配置」勾选启用。学术文献的处理高度依赖Python比如中文分词、引文格式生成、参考文献格式化这些都离不开Python。我在配置环境时踩过一个坑学校的VPN连上后影刀打开的Chrome窗口不走VPN通道。解决方法是在影刀中指定Chrome的用户数据目录使用和你手动登录VPN时一样的Chrome Profile这样Cookie和网络环境都是一致的。关于更多自动化实践可访问 home.linyan.cloud 查看。二、元素定位四合一XPathCSS正则知网的页面结构相对规范但不同页面版本的元素属性会有差异。知网搜索结果XPath//table[contains(class,GridTableContent)]//tr[position()1]知网文献详情CSSdiv.wx-tit h1,div.wx-tit h2正则提取关键字段提取作者分号分隔作者\s*[:]\s*(.?)(?:\n|基金|关键词) 提取关键词分号分隔关键词\s*[:]\s*(.?)(?:\n|摘要|中图分类) 提取摘要摘要\s*[:]\s*(.?)(?:\n\n|关键词|基金)  提取DOIDOI\s*[:]\s*(10\.\d/[^\s])影刀四合一定位配置{知网搜索结果定位:{主_XPath://table[contains(class,GridTableContent)]//tr,备选_CSS:table.GridTableContent tr.result-row,备选_序号:数据行从第2行开始跳过表头,备选_文本:被引用 下载,平台特点:知网搜索结果页是table结构每行一条论文}}三、变量与数据类型拼多多店群自动化报活动上架文献记录数据结构变量名paper_record 值 { 标题: 基于深度学习的自然语言处理研究综述, 英文标题: A Survey of Natural Language Processing Based on Deep Learning, 作者: [张三,李四,王五], 作者单位: 清华大学计算机科学与技术系, 期刊: 计算机学报, 发表年份: 2024, 卷: 47, 期: 3, 页码: 528-550, 关键词: [自然语言处理,深度学习,预训练模型,注意力机制], 摘要: 自然语言处理是人工智能的核心研究方向之一..., DOI: 10.1234/xxxx, 被引次数: 15, 下载次数: 2380, 基金项目: 国家自然科学基金(No.xxxx), 来源数据库: 知网-CNKI, 采集时间: 2025-06-24 }文献分类表格标题第一作者年份期刊关键词被引下载关联度标题A张三2024计算机学报NLP152380高标题B李四2023软件学报深度学习895600高四、流程控制知网多关键词轮询采集指令读取Excel 文件D:\文献采集\搜索关键词.xlsx 保存至keyword_list 指令循环 类型ForEach 列表keyword_list 循环体 指令打开网页 URLhttps://kns.cnki.net/kns8/defaultresult/index 指令在网页中输入 元素xpath//input[idsearchbox] 输入内容当前关键词 指令点击元素 元素xpath//button[contains(class,search-btn)] 指令等待元素出现 元素xpath//table[contains(class,GridTableContent)] 超时15000毫秒 // 设置每页50条 指令点击元素 元素xpath//option[value50] // 获取总结果数和总页数 指令获取元素文本 元素xpath//span[contains(class,pagerTitleCell)] 保存至page_info 指令正则提取 文本page_info 正则共(\d)页 保存至total_pages // 翻页采集 指令For次数循环 起始1 结束total_pages 循环体 采集当前页 点击下一页 随机等待 最短2000最长5000 结束循环维普数据库采集指令打开网页 URLhttp://www.cqvip.com/QK/71135X/ 指令在网页中输入 元素idsearchTextBox 输入内容关键词 指令切换每页显示数量 元素xpath//select[classpageSize] 选项50 指令批量数据抓取 行元素//div[contains(class,data-list)]//li五、网页自动化实战知网详情页采集采集摘要和关键词需要进入详情页指令点击元素 元素当前论文标题链接 指令等待元素出现 元素xpath//div[contains(class,abstract-text)] 超时10000毫秒 指令获取元素文本 元素xpath//h1[contains(class,title)] 保存至paper_title 指令获取元素文本 元素xpath//span[contains(class,author)] 保存至authors_text  指令获取元素文本 元素xpath//span[contains(class,abstract)] 保存至abstract_text 指令获取元素文本 元素xpath//span[contains(class,keywords)] 保存至keywords_text // 采集完成后回到搜索结果页 指令浏览器后退这是我当时踩过的最大坑知网详情页采集了一段时间后IP被限制了。知网对同一IP的访问频率有严格限制短时间内访问太多详情页会被拦截。解决方案详情页和列表页的采集间隔分开控制详情页每次访问后至少休息5秒只采集必需的字段标题、作者、摘要、关键词不必要的数据不进入详情页可以在列表页采集到的信息如被引次数、下载次数、期刊名就不进详情页六、数据处理文献去重与关联度排序指令Python脚本 脚本内容 def paper_dedup(papers): 基于标题相似度去重 unique [] seen_titles [] for paper in papers: title paper[标题].strip().replace( , ) is_dup False for seen in seen_titles: # 简单的前缀匹配去重 if title[:20] seen[:20]: is_dup True break if not is_dup: seen_titles.append(title[:20]) unique.append(paper) return unique def relevance_score(paper, keywords): 计算论文与搜索关键词的关联度 score 0 text paper[标题] paper.get(摘要, ) .join(paper.get(关键词, [])) for kw in keywords: if kw in text: score 2 # 标题和摘要匹配 if kw in paper.get(关键词, []): score 5 # 关键词精确匹配加分 # 被引次数加权 citations paper.get(被引次数, 0) score min(citations / 10, 10) # 最多加10分 return score # 批量排序 for p in papers: p[关联度分数] relevance_score(p, search_keywords) papers.sort(keylambda x: x[关联度分数], reverseTrue)参考文献格式化GB/T 7714指令Python脚本 脚本内容 def format_reference_gbt7714(paper, ref_number): 生成GB/T 7714格式参考文献 # 期刊论文格式[序号] 作者. 题名[J]. 刊名, 年, 卷(期): 起止页码. authors .join(paper[作者][:3]) if len(paper[作者]) 3: authors 等  ref f[{ref_number}] {authors}. {paper[标题]}[J]. {paper[期刊]}, {paper[发表年份]}, {paper[卷]}({paper[期]}): {paper[页码]}. return ref # 批量生成参考文献列表 references [] for i, paper in enumerate(sorted_papers, 1): references.append(format_reference_gbt7714(paper, i))七、鼠标键盘与图像操作PDF下载按钮点击部分论文提供PDF下载指令TryCatch 尝试 指令查找元素 元素xpath//a[contains(text(),PDF下载) or contains(text(),下载)] If条件判断找到下载按钮 True 指令鼠标点击 下载按钮 指令等待下载完成 默认30秒 指令移动文件 源路径下载文件夹/{文件名} 目标路径D:\文献采集\PDF\{论文标题}.pdf Catch // 没有PDF权限跳过 指令记录日志{论文标题}无PDF下载权限验证码识别如果触发验证码偶尔遇到指令元素截图 元素xpath//img[contains(id,captcha)] 保存至captcha_temp.png 指令OCR识别 图片captcha_temp.png 保存至captcha_text 指令在网页中输入 元素xpath//input[idcaptcha-input] 输入内容captcha_text八、进阶技能批量导出题录更高效的方式知网提供批量导出题录功能比逐条进入详情页快得多指令勾选全选 元素xpath//input[idselectAll] 指令点击元素 元素xpath//a[contains(text(),导出与分析)] 指令点击元素 元素xpath//span[contains(text(),EndNote格式)] 指令点击导出 // 解析EndNote导出的文本文件 指令Python脚本 脚本内容 import re def parse_endnote(text): papers [] current {} for line in text.split(\n): line line.strip() if line.startswith(%0 ): if current: papers.append(current) current {类型: line[3:]} elif line.startswith(%T ): current[标题] line[3:] elif line.startswith(%A ): current.setdefault(作者, []).append(line[3:]) elif line.startswith(%J ): current[期刊] line[3:] elif line.startswith(%D ): current[年份] line[3:] elif line.startswith(%K ): current[关键词] line[3:] elif line.startswith(%X ): current[摘要] line[3:] if current: papers.append(current) return papers文献综述辅助生成指令Python脚本 脚本内容 def generate_review_outline(papers, topic): 根据文献自动生成综述大纲建议 # 按关键词聚类 keyword_clusters {} for paper in papers: for kw in paper.get(关键词, []): keyword_clusters.setdefault(kw, []).append(paper[标题]) # 按年份统计研究趋势 year_counts {} for paper in papers: year paper[发表年份] year_counts[year] year_counts.get(year, 0) 1 outline f【{topic}】文献综述大纲建议\n\n outline 1. 引言\n - 研究背景\n - 研究意义近三年发文量{近年统计}\n\n outline 2. 核心概念界定\n\n idx 3 for kw, papers_in_cluster in sorted(keyword_clusters.items(), keylambda x: len(x[1]), reverseTrue)[:5]: outline f{idx}. {kw}相关研究\n for p in papers_in_cluster[:3]: outline f - {p}\n outline \n idx 1 outline f{idx}. 研究述评与展望\n return outline九、平台实战——文献综述全流程完整的文献综述准备流程TEMU店群矩阵自动化运营核价报活动确定研究主题和关键词列表在知网、维普、万方三大数据库分别搜索批量采集文献信息标题、作者、摘要、关键词等三平台数据合并去重按关联度排序筛选高相关文献对有PDF权限的论文自动下载生成GB/T 7714格式的参考文献列表按关键词聚类生成综述大纲建议汇总到Excel供后续写作使用一套流程跑下来200多篇文献的信息整理从过去的两周缩短到半天采集一天阅读分析。十、系统联动文献整理输出Excel指令写入Excel文件 文件路径D:\文献采集\{主题}_文献综述_{日期}.xlsx 工作表1全部文献列表按关联度排序 工作表2高相关文献关联度20 工作表3参考文献列表GB/T 7714格式 工作表4关键词聚类分析 工作表5发文量趋势统计文献信息写入NoteExpress/BibTeX指令Python脚本 脚本内容 def export_bibtex(papers, output_path): 导出BibTeX格式可导入Zotero/EndNote等文献管理工具 lines [] for i, p in enumerate(papers): bib_key f{p.get(作者, [Unknown])[0].split()[-1]}{p.get(发表年份, 2025)} lines.append(farticle{{{bib_key},) lines.append(f title {{{{{p.get(标题, )}}}}},) author_list and .join(p.get(作者, [Unknown])) lines.append(f author {{{{{author_list}}}}},) lines.append(f journal {{{{{p.get(期刊, )}}}}},) lines.append(f year {{{{{p.get(发表年份, )}}}}},) lines.append(f volume {{{{{p.get(卷, )}}}}},) lines.append(f number {{{{{p.get(期, )}}}}},) lines.append(f doi {{{{{p.get(DOI, )}}}}}) lines.append(}) lines.append() with open(output_path, w, encodingutf-8) as f: f.write(\n.join(lines)) return output_path十一、工程化与规范目录结构学术文献采集/ ├── 主流程_文献综述采集.flow ├── 子流程/ │ ├── 知网_批量采集.flow │ ├── 维普_批量采集.flow │ ├── 万方_批量采集.flow │ ├── 数据处理.flow │ ├── PDF下载.flow │ └── 综述辅助.flow ├── 配置/ │ ├── 搜索关键词.xlsx  │ └── 期刊分级目录.jsonSCI/CSSCI等 ├── 数据/ │ ├── 原始采集/ │ ├── 去重合并/ │ └── 综述输出/ ├── PDF/ │ └── {主题}/ └── BibTeX/ └── {主题}.bib采集伦理规范遵守知网等数据库的使用条款仅采集公开可访问的文献元数据不批量下载受版权保护的PDF全文除非机构已购买权限采集频率控制在正常学术检索范围内十二、速查表与常见报错知网元素速查目标XPath说明搜索结果行//table[contains(class,‘GridTableContent’)]//tr[td]跳过表头论文标题.//td[class‘name’]/a相对行元素作者.//td[class‘author’]相对行元素来源.//td[class‘source’]期刊/会议名发表时间.//td[class‘date’]年份被引.//td[class‘quote’]被引次数下载.//td[class‘download’]下载次数常见报错报错1知网搜索结果页结构不一致现象同样的XPath有时候能定位有时候不能原因知网不同子库学术期刊/学位论文/会议论文的页面结构有差异解决按子库类型编写不同的定位配置流程入口先选择子库类型报错2IP访问频率限制现象采集一段时间后页面无法打开解决每次搜索间隔至少10秒详情页访问间隔5秒以上单次任务总访问量不超过500篇报错3中文编码问题现象采集到的文本显示乱码原因不同平台的字符编码不一致解决在Python脚本中统一使用UTF-8编码处理报错4文献引用格式不标准现象生成的中文参考文献格式不符合学校要求解决参考GB/T 7714-2015标准编写格式化函数建议直接导出EndNote格式再转换内容标签影刀RPA 学术文献采集 知网 维普 文献综述 论文管理 自动化作者林焱