一句话下载国家基金结题报告:我把繁琐的网页翻页整理成了一个自动化工具
一句话下载国家基金结题报告:我把繁琐的网页翻页整理成了一个自动化工具
做综述、查项目背景、梳理研究方向时,很多人都会去看国家自然科学基金的结题/成果报告。或者自己写国自然的时候,也需要有一个参考。
这些材料很有价值。它们往往能告诉我们:
-
一个方向过去几年到底做了什么; -
项目负责人如何设计研究路线; -
结题时形成了哪些论文、专利或数据; -
某个研究主题是否已经有比较成熟的技术路径。
但真正用起来时,问题也很明显:很多报告不是一个可以直接下载的 PDF,而是网页里的图片阅读器。
也就是说,你看到的是一页一页的图片。
如果手动整理,通常要经历这样一套流程:
-
打开国家自然科学基金大数据知识管理服务门户; -
输入关键词检索结题项目; -
点进项目详情页; -
找到“结题报告全文”; -
打开“在线阅读”; -
一页一页翻; -
保存图片; -
排序; -
再合并成 PDF。
流程不复杂,但非常消耗时间,而且很容易漏页。
所以我做了一个小工具:NSFC Report Downloader。
它的目标很简单:把这种重复劳动交给脚本,把科研人员的时间留给阅读、判断和写作。
项目地址:
https://github.com/njausxl/nsfc-report-downloader
这个工具能做什么?
NSFC Report Downloader 可以自动下载国家自然科学基金公开结题报告,并把网页图片式报告合并成 PDF。
目前支持三种输入方式。
第一种,按关键词检索。
比如输入“榛子”“果实成熟”“核桃”等关键词,脚本会自动进入结题项目检索页面,找到带有结题报告全文的项目,然后下载报告页图。

第二种,按项目详情页 URL 下载。
如果你已经打开了某个项目详情页,比如:
https://kd.nsfc.cn/finalDetails?id=xxxxxxxx
可以直接把这个链接交给脚本。
第三种,按项目 ID 下载。
如果已经知道 finalDetails?id= 后面的 ID,也可以直接下载对应项目的结题报告。

下载后会得到什么?
脚本运行完成后,会自动生成几类文件:
-
每个项目一份独立 PDF; -
所有项目合并后的 PDF; -
原始报告页图; -
项目元数据 JSON; -
每页图片的来源 URL。

这样做有两个好处。
一是便于阅读。PDF 可以直接在本地打开、标注和归档。
二是便于复核。原始图片和 URL 都保留下来,如果后面需要检查某一页来源,也能追溯。
怎么使用?
先安装依赖:
python -m pip install -r requirements.txt
按关键词下载:
python ".\skill\scripts\download_nsfc_reports.py" "榛子" --output "output/pdf/nsfc_reports_榛子"
按项目详情页 URL 下载:
python ".\skill\scripts\download_nsfc_reports.py" --url "https://kd.nsfc.cn/finalDetails?id=6119577a10db3ed34a44ce65900fe3fe" --output "output/pdf/nsfc_reports_one"
按项目 ID 下载:
python ".\skill\scripts\download_nsfc_reports.py" --id "6119577a10db3ed34a44ce65900fe3fe" --output "output/pdf/nsfc_reports_one"
如果关键词比较宽,可以限制下载项目数量:
python ".\skill\scripts\download_nsfc_reports.py" "果实成熟" --max-projects 1 --output "output/pdf/nsfc_reports_果实成熟"
如果作为 Codex Skill 使用
把 skill/nsfc-report-downloader 或本项目中的 skill/ 内容放入你的 Codex skills 目录后,可以这样说:
使用 NSFC Report Downloader,帮我下载关键词“榛子”相关的国家基金结题报告并合并成 PDF。
Codex 就会帮你自动下载。
它背后是怎么工作的?
国家基金结题报告页面通常不是直接给出 PDF 文件,而是在网页里加载一页一页的报告图片。
脚本主要做了几件事:
-
连接或启动 Chrome/Edge; -
打开国家基金结题项目检索页面; -
从网页运行时状态中提取项目 ID 和项目信息; -
调用公开接口获取报告图片地址; -
按页下载图片; -
使用 Python 将图片合并成 PDF; -
保存元数据,方便后续复核。
这不是绕过权限,也不是破解下载。
它只是把用户在公开网页上能够看到的内容,用自动化方式整理成更适合阅读和归档的格式。
为什么对写综述有帮助?
写综述最怕两件事。
第一,只看论文,不看项目脉络。
论文告诉我们一个研究做出了什么结果,但基金结题报告往往能看到更完整的研究设计、任务分解和成果结构。
第二,资料收集太碎。
同一个主题下的项目,如果一个个点开、截图、保存,很容易出现“查过但没整理好”的情况。
这个工具至少可以解决资料整理的第一步:把公开报告先规整下来。
后面再做内容阅读、证据提取、研究路线比较,会顺很多。
使用时要注意什么?
第一,只处理公开可访问的内容。
如果网站要求登录、验证码或权限验证,不要绕过。该确认权限的地方要由使用者自己确认。
第二,网站偶尔会返回 503。
脚本已经做了限速和重试。如果网络不稳定,可以稍后重跑,已经下载的图片会被复用。
第三,关键词要适当放宽。
国家基金检索并不总是能用一个非常精确的词搜到结果。比如“坚果成熟期”可能没有结果,但“果实成熟”或具体作物名称可能能找到更接近的项目。
最后
这个项目并不复杂,但很实用。
它解决的是一个科研工作中很常见的小痛点:资料明明公开在网页上,却不方便保存、阅读和复核。
如果你也经常需要查国家基金结题材料,可以试试这个工具。
项目地址:
https://github.com/njausxl/nsfc-report-downloader
把重复劳动交给脚本,把时间留给真正重要的判断。
夜雨聆风