架构设计

本文档描述 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)

  • 全文搜索索引

数据流

  1. 用户通过 Web 界面或 API 创建爬取任务

  2. 任务进入后台队列

  3. 爬虫引擎处理任务:

    • 加载期刊页面

    • 提取论文列表

    • 逐个爬取论文详情

    • 保存到数据库

  4. 用户通过 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 文档、类型验证和高性能异步支持。

扩展性

系统可以通过以下方式扩展:

  • 添加更多期刊支持

  • 实现分布式爬取

  • 添加数据导出格式

  • 集成其他分析工具

详细信息请查看源代码中的注释和文档字符串。