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

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

数据字段说明

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

免责声明

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

相关推荐
嗝屁小孩纸9 天前
ES索引重建(零工具纯脚本执行)
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客9 天前
使用 Jina Embeddings v5 和 Elasticsearch 构建“与你的网站数据聊天”的 agent
大数据·人工智能·elasticsearch·搜索引擎·容器·全文检索·jina
LaughingZhu10 天前
Product Hunt 每日热榜 | 2026-02-24
大数据·数据库·人工智能·经验分享·搜索引擎
m0_5287490010 天前
git如何用
大数据·elasticsearch·搜索引擎
光算科技10 天前
谷歌seo怎么做:大白话拆解引流套路
搜索引擎
海兰10 天前
趣闻生成器搭建
大数据·elasticsearch·搜索引擎
marteker10 天前
孩之宝为《变形金刚:大电影》四十周年庆推出“道歉之旅”系列活动
搜索引擎
WKP941810 天前
ES快速入门
大数据·elasticsearch·搜索引擎
历程里程碑11 天前
普通数组---合并区间
java·大数据·数据结构·算法·leetcode·elasticsearch·搜索引擎
cm_chenmin11 天前
Cursor最佳实践之三:MCP
大数据·elasticsearch·搜索引擎