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.
Linyating e29de1d130 上传文件至 'W11' 4 weeks ago
..
.classpath 上传文件至 'W11' 4 weeks ago
AnsiColorUtil.java 上传文件至 'W11' 4 weeks ago
BaseCommand.java 上传文件至 'W11' 4 weeks ago
BaseCrawler.java 上传文件至 'W11' 4 weeks ago
README.md 上传文件至 'W11' 4 weeks ago
logback.xml 上传文件至 'W11' 4 weeks ago

README.md

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天天气预报数据

注意事项

  1. 网络请求:爬虫会访问外部网站,请确保网络连接正常
  2. 反爬机制:部分网站有反爬机制,爬取时会有随机延迟
  3. 数据保存:所有爬取数据会自动保存到CSV文件
  4. 模拟数据:当无法获取真实数据时,会使用模拟数据展示

代码规范

  • 所有输出均通过 ConsoleView 类,禁止直接调用 System.out
  • ANSI颜色码统一在 AnsiColorUtil 类中定义
  • 每个模块包含完整的MVC结构
  • 使用命令模式实现模块功能

许可证

MIT License