学术论文爬虫项目

这是一个基于 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

安装步骤

  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参数的设置。

📋 目前支持列表

类型 缩写 全称/描述
期刊 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 期刊或会议:

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

⚠️ 免责声明

  • 合法合规:本项目仅用于学术研究和个人学习目的。
  • 频率限制 :在使用爬虫时,请务必控制请求频率(通过 WAIT_NETWORK_TIME),以免对 IEEE 或相关网站造成访问压力。
  • 版权问题 :本项目严禁用于爬取、传播或存储受版权保护的 PDF 全文文件。请尊重知识产权。
相关推荐
傻啦嘿哟14 小时前
Docker部署Scrapy集群:爬虫容器化实战指南
爬虫·scrapy·docker
小白学大数据14 小时前
利用 Selenium 与 BeautifulSoup 构建链家动态爬虫
开发语言·爬虫·selenium·beautifulsoup
李昊哲小课17 小时前
简化版天气爬虫教程
爬虫·python
电商API_1800790524718 小时前
淘宝商品视频提取API全解析:从授权到落地实战
爬虫·python·信息可视化·数据分析·音视频
hugh_oo1 天前
100 天学会爬虫 · Day 16:如何分析登录接口?爬虫视角下的登录流程拆解方法
爬虫
盼哥PyAI实验室1 天前
Python 爬虫实战:从 Ajax 到 POST 请求,完整爬取汉堡王门店与产品数据
爬虫·python·ajax
JHC0000001 天前
推特(X)平台推文自动保存(支持保存所有推文相关数据到服务器)
运维·服务器·爬虫·python·dreamweaver
幽络源小助理1 天前
SpringBoot国内旅游景点数据爬虫与可视化分析系统源码 – JavaWeb项目分享
spring boot·后端·爬虫
APIshop1 天前
爬虫工程师视角:如何确保电商平台 API 稳定性的策略与实践
爬虫
sugar椰子皮2 天前
【DrissionPage源码-2】dp如何控制浏览器
爬虫