架构设计¶
本文档描述 ACS Paper Crawler 的系统架构和设计决策。
系统概述¶
ACS Paper Crawler 采用模块化架构,主要组件包括:
Web 服务器 (FastAPI) - RESTful API 和 Web 界面
爬虫引擎 (Selenium) - 浏览器自动化和数据提取
数据存储 (SQLite) - 论文和任务数据持久化
任务调度 - 后台异步任务处理
核心模块¶
API 层¶
基于 FastAPI 框架,提供:
RESTful API 端点
自动生成的 API 文档
请求验证和错误处理
静态文件服务(Web 界面)
爬虫层¶
基于 Selenium WebDriver:
智能等待和页面加载检测
反爬虫检测绕过
元数据提取和解析
错误处理和重试机制
存储层¶
SQLite 数据库:
论文表(papers)
任务表(jobs)
作者表(authors)
关键词表(keywords)
全文搜索索引
数据流¶
用户通过 Web 界面或 API 创建爬取任务
任务进入后台队列
爬虫引擎处理任务:
加载期刊页面
提取论文列表
逐个爬取论文详情
保存到数据库
用户通过 Web 界面或 API 查看结果
技术栈¶
后端: Python 3.9+, FastAPI, Uvicorn
爬虫: Selenium WebDriver, BeautifulSoup4
数据库: SQLite3
前端: Bootstrap 5, Chart.js, Vanilla JavaScript
设计决策¶
为什么使用 Selenium 而不是 requests?
ACS 网站使用 JavaScript 动态加载内容,需要真实的浏览器环境。
为什么使用 SQLite 而不是 PostgreSQL/MySQL?
SQLite 简单易用,无需额外的服务器配置,适合中小规模应用。
为什么使用 FastAPI?
FastAPI 提供自动 API 文档、类型验证和高性能异步支持。
扩展性¶
系统可以通过以下方式扩展:
添加更多期刊支持
实现分布式爬取
添加数据导出格式
集成其他分析工具
详细信息请查看源代码中的注释和文档字符串。