You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
濒危动物信息爬虫系统 - 功能目标与预期效果
一、项目目标
1.1 功能目标
项目名称:濒危动物信息爬虫系统
项目定位:基于Java的CLI爬虫应用,实现濒危动物信息的多数据源爬取、数据管理和可视化展示
| 功能模块 |
功能名称 |
描述 |
优先级 |
| 爬虫核心 |
多数据源爬取 |
支持从中国红色名录、WWF、IUCN三个数据源爬取濒危动物信息 |
高 |
| 爬虫核心 |
策略模式切换 |
通过策略模式实现数据源的动态切换,无需修改代码即可扩展新数据源 |
高 |
| 命令交互 |
CLI命令行界面 |
提供交互式命令行界面,支持多种操作命令 |
高 |
| 命令交互 |
Command模式封装 |
将各类操作封装为独立命令,支持命令扩展和管理 |
高 |
| 数据管理 |
数据展示 |
以列表形式展示爬取到的濒危动物数据 |
高 |
| 数据管理 |
数据持久化 |
将爬取的数据保存到本地文件,支持文本格式输出 |
高 |
| 可视化 |
保护状态分布饼图 |
生成展示各保护等级动物数量分布的饼图 |
中 |
| 可视化 |
种群数量柱状图 |
生成展示各动物种群数量的柱状图 |
中 |
| 异常处理 |
完整异常体系 |
定义爬虫相关的各类异常,提供清晰的错误提示 |
高 |
1.2 预期效果
1.2.1 功能效果
| 序号 |
效果描述 |
实现方式 |
| 1 |
用户通过命令行输入 crawl 命令,系统自动从当前数据源爬取濒危动物数据 |
CLI命令 + 策略模式 |
| 2 |
用户输入 set china/set wwf/set iucn 命令,可切换不同数据源 |
策略模式动态切换 |
| 3 |
用户输入 list 命令,系统以格式化表格展示动物信息(名称、学名、类别、保护状态、栖息地、种群数量) |
Controller + View协作 |
| 4 |
用户输入 save <文件名> 命令,系统将数据保存为文本文件 |
文件IO操作 |
| 5 |
用户输入 visualize 命令,系统自动生成两个可视化图表(PNG格式) |
JFreeChart图表生成 |
| 6 |
系统对无效命令、网络异常、文件操作异常等场景给出清晰的错误提示 |
自定义异常体系 |
1.2.2 输出物
| 输出类型 |
文件名 |
内容说明 |
| 数据文件 |
animals.txt(用户自定义) |
包含动物名称、学名、类别、保护状态、栖息地、描述、种群数量的文本报告 |
| 图表文件 |
status_distribution.png |
濒危动物保护状态分布饼图 |
| 图表文件 |
population_chart.png |
濒危动物种群数量柱状图 |
| 可执行文件 |
AnimalCrawler-1.0-SNAPSHOT-jar-with-dependencies.jar |
包含所有依赖的可执行JAR包 |
1.2.3 技术指标
| 指标 |
预期值 |
说明 |
| 支持数据源数量 |
≥ 3个 |
中国红色名录、WWF、IUCN |
| 单次爬取数据量 |
≥ 5条/数据源 |
每个数据源至少爬取5条动物记录 |
| 图表分辨率 |
800×600/1000×600 |
饼图800×600,柱状图1000×600 |
| 命令响应时间 |
≤ 1秒 |
除爬取操作外的命令响应 |
| 异常捕获率 |
100% |
所有可预见异常均有捕获和提示 |
1.2.4 用户体验
| 体验点 |
预期效果 |
| 易用性 |
提供 help 命令查看所有可用命令,提供 sources 命令查看可用数据源 |
| 交互友好 |
命令输入后立即反馈执行结果,错误信息清晰易懂 |
| 信息展示 |
数据列表格式化展示,便于阅读和理解 |
| 扩展性 |
支持通过添加新策略类扩展数据源,无需修改核心代码 |
二、功能用例
2.1 典型使用流程
用户启动程序 → 查看帮助信息 → 选择数据源 → 爬取数据 → 查看数据 → 保存数据 → 生成可视化图表 → 退出程序
2.2 命令列表
| 命令 |
语法 |
功能说明 |
help |
help |
显示所有可用命令及说明 |
sources |
sources |
显示所有可用数据源列表 |
set |
set <数据源> |
切换数据源(china/wwf/iucn) |
crawl |
crawl |
从当前数据源爬取数据 |
list |
list |
显示已爬取的动物数据列表 |
save |
save <文件名> |
将数据保存到指定文件 |
visualize |
visualize |
生成可视化图表 |
exit |
exit |
退出程序 |
三、架构设计目标
3.1 设计模式应用
| 设计模式 |
应用位置 |
目的 |
| MVC |
Controller/View/Model分离 |
实现关注点分离,提高代码可维护性 |
| 策略模式 |
CrawlerStrategy接口及实现类 |
封装不同数据源的爬取逻辑,支持动态切换 |
| Command模式 |
Command接口及实现类 |
封装用户操作,支持命令扩展和撤销(预留) |
| 异常体系 |
CrawlerException及子类 |
统一异常处理,提供清晰的错误分类 |
3.2 代码质量目标
- 可读性:代码结构清晰,命名规范,关键位置有注释说明
- 可扩展性:通过接口定义实现松耦合,便于添加新功能
- 健壮性:完善的异常处理,确保程序稳定运行
- 可测试性:模块化设计,便于单元测试和集成测试
四、运行环境要求
| 环境 |
要求 |
| JDK版本 |
≥ 11 |
| Maven版本 |
≥ 3.6.0 |
| 操作系统 |
Windows/Linux/macOS |
| 网络要求 |
爬取真实数据源时需联网 |