# CrawlerProject - Java爬虫项目 一个基于Java的爬虫项目,包含豆瓣电影Top250、网易云音乐热搜、北京天气预报三个模块。 ## 项目结构 ``` CrawlerProject/ ├── pom.xml # Maven配置文件 ├── README.md # 项目说明 ├── output/ # 输出目录(运行时自动创建) │ ├── douban_top250.csv # 豆瓣电影数据 │ ├── netease_top150.csv # 网易云音乐数据 │ └── beijing_weather_30days.csv # 北京天气数据 └── src/main/ ├── java/com/crawler/ │ ├── common/ # 公共工具类 │ │ ├── AnsiColorUtil.java # ANSI颜色码管理 │ │ ├── BaseCommand.java # 命令抽象类 │ │ ├── BaseCrawler.java # 爬虫抽象类 │ │ ├── Command.java # 命令接口 │ │ ├── ConsoleView.java # 统一输出类 │ │ ├── CsvUtil.java # CSV读写工具 │ │ ├── LoggerUtil.java # 日志工具类 │ │ └── MainController.java # 主控制器 │ ├── douban/ # 豆瓣模块 │ ├── netease/ # 网易云模块 │ └── weather/ # 天气模块 └── resources/ └── logback.xml # 日志配置 ``` ## 技术栈 - Java 11 - Maven 3.8+ - Jsoup 1.17.2 - HTML解析 - OpenCSV 5.9 - CSV处理 - SLF4J + Logback - 日志框架 ## 运行方式 ### 方式一:使用Maven运行 ```bash cd CrawlerProject mvn clean compile mvn exec:java ``` ### 方式二:打包后运行 ```bash cd CrawlerProject mvn clean package java -jar target/CrawlerProject-1.0.0.jar ``` ## 使用说明 运行后会显示主菜单: ``` ========== 爬虫系统 ========== 1. 豆瓣电影Top250 2. 网易云音乐热搜 3. 北京天气预报 0. 退出 请选择: ``` ### 豆瓣电影Top250模块 进入模块后支持以下命令: - `help` - 显示帮助信息 - `list` - 列出已爬取的电影 - `crawl` - 爬取豆瓣电影Top250数据 - `exit` - 退出模块 ### 网易云音乐热搜模块 进入模块后支持以下命令: - `help` - 显示帮助信息 - `list` - 列出已爬取的歌曲 - `crawl` - 爬取网易云音乐热搜数据 - `exit` - 退出模块 **注意**:网易云反爬严格,如无法获取真实数据将使用模拟数据。 ### 北京天气预报模块 进入模块后支持以下命令: - `help` - 显示帮助信息 - `list` - 列出已爬取的天气数据 - `crawl` - 爬取北京30天天气预报 - `exit` - 退出模块 **API配置**:如需获取真实天气数据,请在 `WeatherCrawler.java` 中配置和风天气API Key: ```java private static final String QWEATHER_API_KEY = "YOUR_API_KEY"; ``` 注册地址:https://devapi.qweather.com/ ## 输出文件 - `output/douban_top250.csv` - 豆瓣电影Top250数据 - `output/netease_top150.csv` - 网易云音乐热搜榜数据 - `output/beijing_weather_30days.csv` - 北京30天天气预报数据 ## 注意事项 1. **网络请求**:爬虫会访问外部网站,请确保网络连接正常 2. **反爬机制**:部分网站有反爬机制,爬取时会有随机延迟 3. **数据保存**:所有爬取数据会自动保存到CSV文件 4. **模拟数据**:当无法获取真实数据时,会使用模拟数据展示 ## 代码规范 - 所有输出均通过 `ConsoleView` 类,禁止直接调用 `System.out` - ANSI颜色码统一在 `AnsiColorUtil` 类中定义 - 每个模块包含完整的MVC结构 - 使用命令模式实现模块功能 ## 许可证 MIT License