这是一个基于 Python 3.12 编写的学术论文爬虫项目,专门用于从 IEEE Xplore 及相关计算机视觉会议(如 CVPR)获取论文的元数据。项目采用 MongoDB 进行数据存储,支持断点续爬,并提供了灵活的数据导出工具。
✨ 项目特性
- 数据全面:抓取 URL、文章标题、发表年份、摘要、作者及作者单位信息。
- 支持广泛:目前已支持 JSAC, TWC, TCOM, TVT, TMC, TON, TIFS, TAES, TITS, INFOCOM, CVPR 等顶级期刊和会议。
- 断点续传:爬取过程中若因网络中断,重启程序可自动跳过已爬取内容,继续未完成的任务。
- 防反爬策略 :内置请求等待机制,可配置
WAIT_NETWORK_TIME以适应 IEEE 的访问频率限制。 - 易于扩展:采用模块化设计,参照现有模板即可快速添加新的期刊或会议支持。
⚠️ 注意 :本项目仅爬取论文的元数据(Metadata),不提供下载 PDF 或爬取全文的功能。这不仅涉及技术限制,更涉及严重的版权和法律问题,请勿尝试修改代码以获取受版权保护的全文内容。
🛠️ 环境依赖
- Python :
3.12 - Database :
MongoDB 8.0.15 - Python Libraries : 详见
requirements.txt
安装步骤
-
克隆项目
git clone git@github.com:wcy-hash/Crawler.git cd Crawler -
安装依赖 建议使用虚拟环境:
pip install -r requirements.txt -
配置数据库 确保本地或远程 MongoDB 服务已启动。 打开
utils/db_api.py,配置你的 MongoDB 连接字符串(URI)。
📂 目录结构说明
Project_Root/
├── 📁 qikan/ # [核心] 期刊爬虫脚本文件夹
│ ├── jsac.py # IEEE JSAC 爬取脚本
│ ├── twc.py # IEEE TWC 爬取脚本
│ └── ... # 其他期刊脚本
├── 📁 huiyi/ # [核心] 会议爬虫脚本文件夹
│ ├── infocom.py # INFOCOM 爬取脚本
│ ├── cvpr.py # CVPR 爬取脚本
│ └── ... # 其他会议脚本
├── 📁 utils/ # [工具] 通用功能模块
│ ├── db_api.py # 数据库连接与操作封装
│ └── main_deal.py # 核心爬虫逻辑、请求封装、反爬延时控制
├── 📁 result/ # [输出] 导出的论文数据结果
├── 📄 main_get_paper.py # [入口] 数据导出与查询脚本
├── 📄 requirements.txt # 项目依赖列表
└── 📄 README.md # 项目说明文档
🚀 使用指南
启动爬虫 (获取数据)
每个期刊或会议都有独立的 Python 脚本。你可以根据需求运行特定的脚本。
示例:爬取 IEEE JSAC 期刊
python qikan/jsac.py
示例:爬取 INFOCOM 会议
python huiyi/infocom.py
- 爬取原理 :
- 脚本读取内置的
visit_url_all_issue(过刊)、visit_url_early_access(优先出版) 或visit_url_current_issue(当期)。 - 遍历分页,获取所有文章的基础信息(URL、标题、年份)存入 MongoDB。
- 再次遍历数据库中未完善的记录,访问具体文章页面,抓取摘要、作者和单位信息进行更新。
- 脚本读取内置的
提示 :你可以在
utils/main_deal.py中调整参数来控制爬取速度,避免被封 IP。
导出数据 (查询结果)
使用 main_get_paper.py 从数据库中提取数据并保存到 result 文件夹。
python main_get_paper.py
在 main_get_paper.py 中,你可以自定义以下筛选条件:
- 目标期刊/会议:指定导出哪些来源的数据。
- 时间范围:例如只导出近 3 年的文章。
- 存储限制:设置文件分割大小,避免单个结果文件过大。
- 其他限制 :支持其他限制
query_filter参数的设置。
📋 目前支持列表
| 类型 | 缩写 | 全称/描述 |
|---|---|---|
| 期刊 | JSAC | IEEE Journal on Selected Areas in Communications |
| 期刊 | TWC | IEEE Transactions on Wireless Communications |
| 期刊 | TCOM | IEEE Transactions on Communications |
| 期刊 | TVT | IEEE Transactions on Vehicular Technology |
| 期刊 | TMC | IEEE Transactions on Mobile Computing |
| 期刊 | TON | IEEE/ACM Transactions on Networking |
| 期刊 | TIFS | IEEE Transactions on Information Forensics and Security |
| 期刊 | TAES | IEEE Transactions on Aerospace and Electronic Systems |
| 期刊 | TITS | IEEE Transactions on Intelligent Transportation Systems |
| 会议 | INFOCOM | IEEE International Conference on Computer Communications |
| 会议 | CVPR | IEEE/CVF Conference on Computer Vision and Pattern Recognition |
⚙️ 二次开发与扩展
如果你需要添加新的 IEEE 期刊或会议:
- 在
qikan/或huiyi/文件夹下新建一个.py文件(参考现有的twc.py)。 - 找到目标期刊在 IEEE Xplore 上的主页 URL。
- 修改代码中的
visit_url_*变量。 - 运行脚本即可,
utils/main_deal.py中的通用逻辑会自动处理分页和详情抓取。
⚠️ 免责声明
- 合法合规:本项目仅用于学术研究和个人学习目的。
- 频率限制 :在使用爬虫时,请务必控制请求频率(通过
WAIT_NETWORK_TIME),以免对 IEEE 或相关网站造成访问压力。 - 版权问题 :本项目严禁用于爬取、传播或存储受版权保护的 PDF 全文文件。请尊重知识产权。