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

一个用于从批量采集国家自然基金项目数据的 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 中国社区官方博客2 小时前
jina-embeddings-v5-omni:用于文本、图像、音频和视频的 embeddings
大数据·人工智能·elasticsearch·搜索引擎·ai·音视频·jina
泓博3 小时前
Openclaw-Ubuntu常用命令
大数据·elasticsearch·搜索引擎·ai
技术路线图5 小时前
教学智慧的数字围城:当专业积累遭遇人工智能认知屏蔽
人工智能·搜索引擎
Elastic 中国社区官方博客5 小时前
Elasticsearch ES|QL “读取时模式”:你的未映射字段一直都在那里
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客5 小时前
Elasticsearch 查询日志:每个查询一行协调器级别日志,适用于 ES|QL、DSL、SQL 和 EQL
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索·可用性测试
老陈头聊SEO20 小时前
生成引擎优化(GEO)全景式分析与内容创作及用户体验优化策略
其他·搜索引擎·seo优化
Lucky me.1 天前
Cloud code完整命令手册
大数据·elasticsearch·搜索引擎
老陈头聊SEO1 天前
生成引擎优化(GEO)在提升内容创作和用户体验中的关键作用分析
其他·搜索引擎·seo优化
青槿吖1 天前
第一篇:Elasticsearch 入门踩坑记:从 “URL 拼写错误” 到跑通第一个搜索服务
大数据·elasticsearch·搜索引擎·spring cloud·微服务·架构·全文检索
Elastic 中国社区官方博客1 天前
一个索引,所有媒体:介绍 jina-embeddings-v5-omni
大数据·人工智能·elasticsearch·搜索引擎·ai·媒体·jina