完整教程:学术论文爬虫项目

这是一个基于 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 或爬取全文的功能。这不仅涉及技术限制,更涉及严重的版权和法律问题,请勿尝试修改代码以获取受版权保护的全文内容。

️ 环境依赖

  • Python3.12
  • DatabaseMongoDB 8.0.15
  • Python Libraries: 详见 requirements.txt

   安装步骤

  1. 克隆项目

    git clone git@github.com:wcy-hash/Crawler.git
    cd Crawler
  2. 安装依赖 建议使用虚拟环境:

    pip install -r requirements.txt
  3. 配置数据库 确保本地或远程 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
  • 爬取原理
    1. 脚本读取内置的 visit_url_all_issue (过刊)、visit_url_early_access (优先出版) 或 visit_url_current_issue (当期)。
    2. 遍历分页,获取所有文章的基础信息(URL、标题、年份)存入 MongoDB。
    3. 再次遍历数据库中未完善的记录,访问具体文章页面,抓取摘要、作者和单位信息进行更新。

提示:你可以在 utils/main_deal.py 中调整参数来控制爬取速度,避免被封 IP。

导出数据 (查询结果)

使用 main_get_paper.py 从数据库中提取数据并保存到 result 文件夹。

python main_get_paper.py

在 main_get_paper.py 中,你可以自定义以下筛选条件:

  • 目标期刊/会议:指定导出哪些来源的数据。
  • 时间范围:例如只导出近 3 年的文章。
  • 存储限制:设置文件分割大小,避免单个结果文件过大。
  • 其他限制:支持其他限制query_filter参数的设置。

目前支持列表

类型缩写全称/描述
期刊JSACIEEE Journal on Selected Areas in Communications
期刊TWCIEEE Transactions on Wireless Communications
期刊TCOMIEEE Transactions on Communications
期刊TVTIEEE Transactions on Vehicular Technology
期刊TMCIEEE Transactions on Mobile Computing
期刊TONIEEE/ACM Transactions on Networking
期刊TIFSIEEE Transactions on Information Forensics and Security
期刊TAESIEEE Transactions on Aerospace and Electronic Systems
期刊TITSIEEE Transactions on Intelligent Transportation Systems
会议INFOCOMIEEE International Conference on Computer Communications
会议CVPRIEEE/CVF Conference on Computer Vision and Pattern Recognition

⚙️ 二次开发与扩展

如果你需要添加新的 IEEE 期刊或会议:

  1. 在 qikan/ 或 huiyi/ 文件夹下新建一个 .py 文件(参考现有的 twc.py)。
  2. 找到目标期刊在 IEEE Xplore 上的主页 URL。
  3. 修改代码中的 visit_url_* 变量。
  4. 运行脚本即可,utils/main_deal.py 中的通用逻辑会自动处理分页和详情抓取。

⚠️ 免责声明

  • 合法合规:本项目仅用于学术研究和个人学习目的。
  • 频率限制:在使用爬虫时,请务必控制请求频率(通过 WAIT_NETWORK_TIME),以免对 IEEE 或相关网站造成访问压力。
  • 版权问题:本项目严禁用于爬取、传播或存储受版权保护的 PDF 全文文件。请尊重知识产权。

posted on 2026-01-12 12:32  ljbguanli  阅读(58)  评论(0)    收藏  举报