乐于分享
好东西不私藏

一句话下载国家基金结题报告:我把繁琐的网页翻页整理成了一个自动化工具

一句话下载国家基金结题报告:我把繁琐的网页翻页整理成了一个自动化工具

一句话下载国家基金结题报告:我把繁琐的网页翻页整理成了一个自动化工具

做综述、查项目背景、梳理研究方向时,很多人都会去看国家自然科学基金的结题/成果报告。或者自己写国自然的时候,也需要有一个参考。

这些材料很有价值。它们往往能告诉我们:

  • 一个方向过去几年到底做了什么;
  • 项目负责人如何设计研究路线;
  • 结题时形成了哪些论文、专利或数据;
  • 某个研究主题是否已经有比较成熟的技术路径。

但真正用起来时,问题也很明显:很多报告不是一个可以直接下载的 PDF,而是网页里的图片阅读器。

也就是说,你看到的是一页一页的图片。

如果手动整理,通常要经历这样一套流程:

  1. 打开国家自然科学基金大数据知识管理服务门户;
  2. 输入关键词检索结题项目;
  3. 点进项目详情页;
  4. 找到“结题报告全文”;
  5. 打开“在线阅读”;
  6. 一页一页翻;
  7. 保存图片;
  8. 排序;
  9. 再合并成 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 文件,而是在网页里加载一页一页的报告图片。

脚本主要做了几件事:

  1. 连接或启动 Chrome/Edge;
  2. 打开国家基金结题项目检索页面;
  3. 从网页运行时状态中提取项目 ID 和项目信息;
  4. 调用公开接口获取报告图片地址;
  5. 按页下载图片;
  6. 使用 Python 将图片合并成 PDF;
  7. 保存元数据,方便后续复核。

这不是绕过权限,也不是破解下载。

它只是把用户在公开网页上能够看到的内容,用自动化方式整理成更适合阅读和归档的格式。


为什么对写综述有帮助?

写综述最怕两件事。

第一,只看论文,不看项目脉络。

论文告诉我们一个研究做出了什么结果,但基金结题报告往往能看到更完整的研究设计、任务分解和成果结构。

第二,资料收集太碎。

同一个主题下的项目,如果一个个点开、截图、保存,很容易出现“查过但没整理好”的情况。

这个工具至少可以解决资料整理的第一步:把公开报告先规整下来。

后面再做内容阅读、证据提取、研究路线比较,会顺很多。


使用时要注意什么?

第一,只处理公开可访问的内容。

如果网站要求登录、验证码或权限验证,不要绕过。该确认权限的地方要由使用者自己确认。

第二,网站偶尔会返回 503。

脚本已经做了限速和重试。如果网络不稳定,可以稍后重跑,已经下载的图片会被复用。

第三,关键词要适当放宽。

国家基金检索并不总是能用一个非常精确的词搜到结果。比如“坚果成熟期”可能没有结果,但“果实成熟”或具体作物名称可能能找到更接近的项目。


最后

这个项目并不复杂,但很实用。

它解决的是一个科研工作中很常见的小痛点:资料明明公开在网页上,却不方便保存、阅读和复核。

如果你也经常需要查国家基金结题材料,可以试试这个工具。

项目地址:

https://github.com/njausxl/nsfc-report-downloader

把重复劳动交给脚本,把时间留给真正重要的判断。