基于 Codex + Selenium 的 CNKI 博士论文开题调研自动化流程
1. 背景
博士开题调研最麻烦的地方,不是"找几篇论文",而是要在一个较大的文献池里系统判断:
- 近五年这个方向到底有哪些博士论文?
- 主流研究分支是什么?
- 技术路线怎么演进?
- 哪些问题已经被大量研究?
- 哪些问题还存在明显短板?
- 自己的博士选题可以从哪里切入?
本次任务聚焦的是 2021-2026 年中国知网博士学位论文,主题包括:
- 空间信息智能化
- 地理空间智能 GeoAI
- 遥感智能解译
- 时空智能建模
- 多模态空间数据融合
- 小样本 / 弱监督空间学习
- 跨区域泛化
- 复杂破碎场景精细解译
- 模型可解释性
- 轻量化工程落地
如果完全手工检索,需要不断换关键词、翻结果页、打开论文详情、复制摘要、再做分类归纳,效率很低,而且过程不可复现。因此这里做了一套半自动化文献筛选和摘要读取流程。
2. 项目目标
本项目的目标不是简单地"爬知网",而是服务于博士开题调研,构建一个可复现的文献筛选流程。
核心目标包括:
- 基于 CNKI 博士学位论文库筛选近五年相关论文。
- 通过多组合关键词构建候选论文池。
- 对候选论文进行本地相关性打分。
- 只读取高相关论文摘要,避免盲目逐篇打开。
- 输出结构化结果,便于后续写开题综述。
- 归纳研究体系、热点趋势、短板和创新切入点。
本次实际运行中,最终筛出 273 篇博士论文候选,并读取了前 80 篇高相关论文摘要。



3. 用到的技术和工具
3.1 编程环境
本次使用 Python 作为核心语言,运行环境为 conda 环境:
text
gkpytorch
使用 Chrome + ChromeDriver 驱动知网页面访问。
3.2 核心 Python 库
| 库 | 作用 |
|---|---|
selenium |
驱动 Chrome 浏览器访问知网,解决普通请求容易 403 的问题 |
requests |
在有 Cookie 的情况下尝试快速请求论文详情页 |
BeautifulSoup |
解析 HTML 页面文本 |
pandas |
整理候选论文表、摘要表,输出 CSV |
argparse |
支持命令行参数,方便控制候选模式、摘要数量、页数等 |
json/jsonl/csv |
保存结构化数据 |
pathlib |
管理本地路径 |
hashlib |
给详情页生成缓存文件名 |
dataclasses |
定义候选论文和摘要记录的数据结构 |
3.3 外部工具
| 工具 | 作用 |
|---|---|
| ChromeDriver | 连接 Python Selenium 和 Chrome 浏览器 |
| Chrome 可见浏览器 | 访问知网,保留登录态 |
| PowerShell | 启动脚本、整理文件、监控日志 |
| Codex | 负责设计流程、写代码、调试、执行、整理结果和总结思路 |
4. 为什么不能直接用普通爬虫
一开始尝试过普通请求和简单 Selenium 抓取,但很快发现几个问题。
第一,知网对普通 HTTP 请求和 headless 浏览器访问不友好,容易返回:
text
HTTP ERROR 403
第二,如果用 Selenium 可见浏览器逐篇打开论文详情页,虽然能读到摘要,但速度很慢。每篇论文打开、等待、解析大概需要几秒钟,数百篇论文会非常耗时。
第三,关键词如果设置得太宽,比如:
text
多模态 空间数据 融合
空间信息智能化
会混入大量非目标领域论文,例如工业调度、医学影像、情绪识别、金融分析等。
所以,单纯"能打开网页"不够,必须重新设计流程。
5. Codex 在这里发挥了什么作用
这次 Codex 不只是写了一段 Selenium 代码,而是参与了完整的研发过程。
5.1 环境诊断
最开始用户提供了 ChromeDriver 路径,但本机 Chrome 版本和 ChromeDriver 版本不匹配。
原来的 ChromeDriver 是:
text
ChromeDriver 142
本机 Chrome 是:
text
Chrome 148
所以 Selenium 无法启动。Codex 识别到版本不匹配后,下载了匹配的 ChromeDriver 148,并把脚本默认路径改到新版 driver。
5.2 发现 headless 不可用
脚本最初尝试 headless 模式,但知网页面直接返回 403。Codex 通过测试确认:
text
headless Chrome -> 403
visible Chrome -> 可以打开知网
因此后续采用可见 Chrome + 独立浏览器 profile 的方式,保证知网访问稳定。
5.3 从"慢爬虫"改成"两阶段流程"
最初的做法是边搜索边打开详情页读摘要,结果太慢,而且搜索结果不准。用户指出"这样抓取不是个事",Codex 重新设计了流程:
text
先筛候选题录 -> 本地打分 -> 只读取高相关摘要
这个改动是整个方案的关键。
5.4 构建多组合关键词计划
Codex 将检索词拆成多个研究分支,而不是只用一个大词搜索。
例如:
text
遥感 智能解译
遥感影像 语义分割
遥感 变化检测 深度学习
多源遥感 数据融合
光学 SAR 融合
小样本 遥感
弱监督 遥感
域适应 遥感
复杂场景 遥感 目标检测
遥感 基础模型
这样比单一关键词更系统,也能覆盖不同技术分支。
5.5 实现本地相关性打分
Codex 写了相关性评分逻辑,根据题名、命中关键词和研究分支判断是否高相关。
正向加分词包括:
text
遥感、地理空间、GeoAI、时空、智能解译、语义分割、目标检测、变化检测、
多源、多模态、高光谱、SAR、LiDAR、小样本、弱监督、半监督、域适应、
泛化、可解释、轻量化、基础模型
负向扣分词包括:
text
医学、金融、就业、化工、热轧、生产调度、情绪、法律、教育
这样可以过滤一部分跑偏论文。
5.6 执行、监控和整理结果
Codex 还负责:
- 执行候选筛选脚本
- 监控后台进程
- 读取日志
- 检查候选数量
- 读取摘要输出
- 整理目录结构
- 删除无用测试文件
- 将代码和结果分开放置
最终形成了清晰的工程目录。
6. 最终流程
整个流程可以概括为:
text
1. 配置多组合关键词
2. Selenium 打开知网博士论文检索页
3. 抓取结果页题录
4. 按年份过滤 2021-2026
5. 按题名和作者去重
6. 根据关键词和研究分支打分
7. 排序生成候选池
8. 选取高分论文
9. 打开详情页读取摘要
10. 输出 CSV、JSONL、Markdown 笔记和初读报告
7. 高相关是怎么判断的
高相关不是人工主观判断,也不是大模型直接判断,而是一个可解释的规则打分系统。
每篇候选论文会生成一个分数:
text
相关性分数 =
正向关键词加分
+ 所属研究分支加分
- 跑偏领域关键词扣分
例如一篇论文题名中包含:
text
遥感 +8
语义分割 +7
小样本 +8
高分辨率 +4
如果它又来自 remote_interpretation 或 fewshot_weak_domain 检索组,还会继续加分。
如果题名中出现:
text
医学
金融
化工
就业
则会扣分。
最后按分数排序,读取前若干篇摘要。本次读取的是前 80 篇。
8. 本次输出结果
最终整理后的目录结构如下:
text
D:\pythonpj\gkdeeplearning\ChromeDriver下载
├─ chrome-for-testing-148
├─ selenium_chrome_profile
├─ code
└─ results-out
代码目录:
text
D:\pythonpj\gkdeeplearning\ChromeDriver下载\code
结果目录:
text
D:\pythonpj\gkdeeplearning\ChromeDriver下载\results-out\cnki_doctoral_opening_research_20260602_154854
其中包括:
text
01_candidate_screening_multi_combo_20260602_154133
02_abstract_reading_top80_20260602_154854
logs
关键结果文件:
| 文件 | 内容 |
|---|---|
candidates_ranked.csv |
273 篇候选博士论文及相关性分数 |
abstracts_selected.csv |
80 篇高相关论文摘要 |
abstract_notes.md |
摘要阅读笔记 |
opening_review_summary.md |
本轮初读报告 |
logs |
检索和摘要读取日志 |
9. 解决了什么问题
9.1 解决了手工筛文献效率低的问题
手工在知网中检索、翻页、打开论文、复制摘要非常耗时。自动化流程可以快速构建候选池,并将人工精力集中在高相关摘要阅读上。
9.2 解决了搜索关键词不系统的问题
单个关键词很容易漏文献。多组合关键词能覆盖多个研究分支,例如遥感解译、多模态融合、时空预测、小样本弱监督、跨域泛化等。
9.3 解决了结果跑偏的问题
通过正向加分和负向扣分,可以降低医学、金融、化工、管理等非目标领域论文混入的比例。
9.4 解决了过程不可复现的问题
所有关键词、候选结果、摘要结果和日志都被保存。后续可以继续增加关键词、增加页数、扩大摘要读取数量,而不是从头再来。
9.5 解决了"先读哪篇"的问题
不是盲目读所有论文,而是先按相关性排序,再优先阅读高分论文摘要。
10. 应用意义
这套流程可以用于:
- 博士开题文献调研
- 研究热点归纳
- 技术路线演进分析
- 学科交叉方向梳理
- 基金选题预研
- 论文综述写作
- 研究空白识别
- 创新点凝练
对于 GeoAI、遥感智能解译这类交叉方向尤其有意义。因为这些方向的论文不会只集中在一个关键词下,而是散落在遥感、测绘、地理、计算机、农业、生态、灾害、城市等多个领域中。
自动化流程可以帮助研究者从"凭感觉找论文"转向"有证据地构建文献池"。
11. 相比其他方法的优势
11.1 相比纯手工检索
手工检索灵活,但效率低、容易漏、过程不可复现。这个方案可以批量检索、批量整理、保留日志和结果。
11.2 相比普通爬虫
普通爬虫容易被知网拒绝,也容易盲目抓取。这个方案通过 Selenium 可见浏览器解决访问问题,并通过关键词计划和相关性打分控制质量。
11.3 相比搜索引擎检索
搜索引擎结果不稳定,而且不一定聚焦博士论文。这个方案直接面向 CNKI 博士学位论文库,更贴合博士开题调研。
11.4 相比一次性导出题录
导出题录只能得到基础信息。这个方案不仅能筛题录,还能进一步读取摘要,形成摘要库和阅读笔记。
11.5 相比直接让 AI 写综述
直接让 AI 写综述容易空泛。这个方案先构建真实论文摘要样本,再基于样本归纳热点和空白,更适合严肃开题。
12. 当前不足和下一步优化
当前高相关判断主要基于题名、命中关键词和检索分组,还没有对摘要全文做二次语义打分。因此仍可能混入少量边缘论文。
下一步可以优化为:
text
第一轮:题名和关键词打分
第二轮:摘要全文打分
第三轮:按研究分支自动归类
第四轮:生成正式综述提纲
还可以加入更细的分类标签:
text
多模态时空特征对齐
跨区域泛化
小样本学习
弱监督学习
复杂破碎场景
变化检测
目标检测
语义分割
可解释性
轻量化部署
GeoAI 时空建模
这样可以直接输出开题报告中的"研究现状、研究热点、存在问题、创新切入点"。
13. 总结
这次工作的核心不是写一个 Selenium 爬虫,而是把博士开题调研流程工程化。
Codex 在其中发挥了几个作用:
text
环境诊断
工具配置
脚本开发
流程重构
关键词设计
相关性打分
执行监控
结果整理
初步综述归纳
最终形成了一套可复现、可扩展、可继续优化的 CNKI 博士论文调研流程。
它的价值在于:把原本零散、重复、低效的文献检索工作,变成一个结构化的数据处理流程,为博士开题选题提供更稳定的前沿依据。