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

一个用于从批量采集国家自然基金项目数据的 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 编码。

数据字段说明

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

免责声明

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

相关推荐
Elastic 中国社区官方博客5 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
历程里程碑6 小时前
2. Git版本回退全攻略:轻松掌握代码时光机
大数据·c++·git·elasticsearch·搜索引擎·github·全文检索
饭后一颗花生米10 小时前
Git冷命令拯救崩溃现场
大数据·elasticsearch·搜索引擎
4311媒体网11 小时前
从零开始:使用帝国CMS(EmpireCMS)搭建网站的详细教程
搜索引擎·织梦cms
pride.li16 小时前
Git 笔记:将一段旧历史压缩成一个提交
大数据·elasticsearch·搜索引擎
萌>__<新18 小时前
Git常见使用命令及易踩坑点
大数据·elasticsearch·搜索引擎
老陈头聊SEO1 天前
AI技术带来的SEO关键词优化新方向与应用探索
其他·搜索引擎·seo优化
Elastic 中国社区官方博客2 天前
Elasticsearch:快速近似 ES|QL - 第二部分
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
Adair_z2 天前
[SEO艺术重读] 第1篇 搜索:反映意识并连接商业契机
搜索引擎
Elastic 中国社区官方博客2 天前
Elasticsearch:快速近似 ES|QL - 第一部分
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索