# Web Crawler Application 基于 Java 的多网站爬虫应用,采用 MVC、Command 模式、策略模式和完整的异常体系设计。 ## 功能特性 - 爬取豆瓣电影排行榜 - 爬取豆瓣读书排行榜 - 爬取 Books to Scrape 网站 - 数据保存为 JSON 格式文件 - 支持交互式和命令行模式 ## 项目架构 ### 设计模式 1. **MVC 模式** - Model: `Movie`, `Book`, `ScrapeBook` - View: `ConsoleView` - Controller: `CrawlerController` 2. **策略模式 (Strategy Pattern)** - `CrawlerStrategy` 接口 - `DoubanMovieStrategy` - 豆瓣电影策略 - `DoubanBookStrategy` - 豆瓣读书策略 - `BooksToScrapeStrategy` - Books to Scrape 策略 3. **命令模式 (Command Pattern)** - `Command` 接口 - `CrawlCommand` - 单个爬虫命令 - `CrawlAllCommand` - 组合命令,执行所有爬虫 4. **异常体系** - `CrawlerException` - 基类异常 - `NetworkException` - 网络异常 - `ParseException` - 解析异常 - `FileException` - 文件操作异常 ## 使用方法 ### 编译项目 ```bash mvn clean package ``` ### 运行方式 #### 1. 交互式模式 ```bash java -jar target/web-crawler-1.0-SNAPSHOT.jar -i ``` #### 2. 命令行模式 爬取所有网站: ```bash java -jar target/web-crawler-1.0-SNAPSHOT.jar ``` 爬取指定网站: ```bash java -jar target/web-crawler-1.0-SNAPSHOT.jar -s douban-movie java -jar target/web-crawler-1.0-SNAPSHOT.jar -s douban-book java -jar target/web-crawler-1.0-SNAPSHOT.jar -s books-to-scrape ``` 查看帮助: ```bash java -jar target/web-crawler-1.0-SNAPSHOT.jar --help ``` ## 输出文件 爬取的数据将保存到 `data/` 目录下: - `douban_movies.json` - 豆瓣电影数据 - `douban_books.json` - 豆瓣读书数据 - `books_to_scrape.json` - Books to Scrape 数据 ## 依赖项 - Jsoup - HTML 解析 - Gson - JSON 处理 - Picocli - 命令行解析 - SLF4J - 日志框架