国家自然基金项目数据采集脚本

一个用于从批量采集国家自然基金项目数据的 Python 工具,支持自定义关键词搜索和年份范围筛选。

github网址:https://github.com/CaoYongshengcys/NSFC_scraper

功能特性

  • 支持自定义关键词搜索
  • 支持指定立项年份范围
  • 自动分页爬取所有结果
  • Cookie 持久化,避免重复登录
  • 数据导出为 CSV 格式,支持 Excel 直接打开
  • 可视化浏览器操作,方便调试和手动登录

环境要求

  • Python 3.8+
  • Chromium 浏览器(Playwright 会自动安装)

安装步骤

1. 安装依赖

bash 复制代码
pip install playwright

2. 安装浏览器

bash 复制代码
playwright install chromium

项目结构

复制代码
.
├── scrape_fund.py          # 主程序
├── cookies.json            # Cookie 缓存文件(自动生成)
├── fund_关键词_年份.csv     # 导出的数据文件(自动生成)
└── README.md               # 本文档

使用方法

基本用法

bash 复制代码
python scrape_fund.py --keyword "电动汽车"

完整参数

bash 复制代码
python scrape_fund.py --keyword "关键词" --start-year 2022 --end-year 2026 --wait 60

参数说明

参数 简写 默认值 说明
--keyword -k 电动汽车 搜索关键词
--start-year -s 2022 起始年份
--end-year -e 2026 结束年份
--wait -w 30 登录等待时间(秒)

使用示例

搜索"人工智能"相关项目,年份范围 2020-2024:

bash 复制代码
python scrape_fund.py -k "人工智能" -s 2020 -e 2024

搜索"新能源"相关项目,增加登录等待时间:

bash 复制代码
python scrape_fund.py --keyword "新能源" --wait 120

运行流程

  1. 程序启动后会自动打开 Chromium 浏览器
  2. 访问青塔自科云首页
  3. 等待用户登录(首次运行需要手动登录)
  4. 登录成功后,程序会自动保存 Cookie
  5. 根据关键词和年份范围执行搜索
  6. 自动翻页爬取所有结果
  7. 将数据保存为 CSV 文件

输出示例

终端输出

复制代码
==================================================
青塔自科云基金项目爬虫
==================================================
关键词: 电动汽车
年份范围: 2022 - 2026
登录等待: 30秒
==================================================
正在访问首页...
已加载保存的cookies
请在浏览器中登录(如果需要),等待30秒...
已保存cookies

正在访问搜索页: https://xxxx/fund/list?keyword=电动汽车&searchtype=(立项年份=2022-2026)
等待搜索结果加载...
找到列表项!
结果信息: 项目数 256
总项目数: 256
找到 20 个列表项

正在解析第 1 页...
当前页找到 20 个项目
已收集 20 个项目

正在解析第 2 页...
当前页找到 20 个项目
已收集 40 个项目
...

总共收集到 256 个项目
数据已保存到 fund_电动汽车_2022-2026.csv

CSV 输出格式

题目 受资机构 负责人 资助机构 金额 立项年份 申报领域
电动汽车充电优化研究 清华大学 张三 国家自然科学基金委员会 50万元 2023 工程与材料科学
... ... ... ... ... ... ...

注意事项

  1. 首次运行需要手动登录青塔账号
  2. 登录成功后 Cookie 会自动保存,后续运行可能无需重复登录
  3. 如果 Cookie 过期,请删除 cookies.json 文件后重新运行
  4. 建议适当增加 --wait 参数值,确保登录完成
  5. 爬取过程中请勿关闭浏览器窗口
  6. 请遵守网站使用条款,合理控制爬取频率

常见问题

Q: 提示"未找到数据"怎么办?

A: 请检查以下几点:

  • 是否已成功登录账号
  • 关键词是否正确
  • 年份范围内是否有相关项目
  • 尝试增加 --wait 参数值

A: 删除项目目录下的 cookies.json 文件,重新运行程序并手动登录。

bash 复制代码
rm cookies.json
python scrape_fund.py --keyword "关键词" --wait 60

Q: 如何修改爬取速度?

A: 可以在源码中修改 time.sleep() 的参数值。建议不要设置过快,以免触发反爬机制。

Q: CSV 文件用 Excel 打开乱码?

A: 程序已使用 utf-8-sig 编码,支持 Excel 直接打开。如仍有问题,可尝试用记事本打开后另存为 ANSI 编码。

数据字段说明

字段 说明
题目 项目名称
受资机构 承担项目的机构
负责人 项目负责人姓名
资助机构 提供资助的机构(如国家自然科学基金委员会)
金额 资助金额(万元)
立项年份 项目立项的年份
申报领域 项目所属的学科领域

免责声明

本工具仅供学习和研究使用。

相关推荐
林恒smileZAZ3 小时前
Nuxt3 与官网 SEO:从 TDK 配置到搜索引擎收录
搜索引擎
Elastic 中国社区官方博客15 小时前
易捷问数(NewmindExAI)平台解决 ES 升级后 AI 助手与 Attack Discovery 不正常问题
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·ai
_周游18 小时前
Java8 API文档搜索引擎_7.项目优化之权重合并
java·开发语言·前端·搜索引擎·intellij-idea
Elastic 中国社区官方博客1 天前
从向量到关键词:在 LangChain 中的 Elasticsearch 混合搜索
大数据·开发语言·数据库·elasticsearch·搜索引擎·ai·langchain
CSDN搜索1 天前
基于Elasticsearch构建高性能技术社区搜索
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
Elasticsearch 8.17.2 升级到 9.2.4 完整升级过程
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·运维开发
春日见1 天前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
Elastic 中国社区官方博客2 天前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
Elastic 中国社区官方博客2 天前
Elasticsearch:交易搜索 - AI Agent builder
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索