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.
3.7 KiB
3.7 KiB
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运行
cd CrawlerProject
mvn clean compile
mvn exec:java
方式二:打包后运行
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:
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天天气预报数据
注意事项
- 网络请求:爬虫会访问外部网站,请确保网络连接正常
- 反爬机制:部分网站有反爬机制,爬取时会有随机延迟
- 数据保存:所有爬取数据会自动保存到CSV文件
- 模拟数据:当无法获取真实数据时,会使用模拟数据展示
代码规范
- 所有输出均通过
ConsoleView类,禁止直接调用System.out - ANSI颜色码统一在
AnsiColorUtil类中定义 - 每个模块包含完整的MVC结构
- 使用命令模式实现模块功能
许可证
MIT License