From 26ceabbf0d826645ee46d16fcb265be5f2f9063a Mon Sep 17 00:00:00 2001 From: LiZifan <1400341067@qq.com> Date: Sat, 30 May 2026 19:47:18 +0800 Subject: [PATCH] 1 --- ...26-李梓帆-期末实验报告报告.docx | Bin 0 -> 418362 bytes project/java1/java-cli/.gitignore | 4 + project/java1/java-cli/W10 PPT.md | 492 ++++++++++++ project/java1/java-cli/pom.xml | 57 ++ .../java/com/example/datacollect/Main.java | 113 +++ .../example/datacollect/command/Command.java | 8 + .../datacollect/command/CrawlCommand.java | 96 +++ .../datacollect/command/ExitCommand.java | 28 + .../datacollect/command/HelpCommand.java | 27 + .../datacollect/command/ListCommand.java | 27 + .../controller/CrawlerController.java | 57 ++ .../exception/CrawlerException.java | 11 + .../exception/NetworkException.java | 11 + .../datacollect/exception/ParseException.java | 11 + .../example/datacollect/model/Article.java | 45 ++ .../repository/ArticleRepository.java | 80 ++ .../datacollect/strategy/BlogStrategy.java | 43 ++ .../strategy/CctvNewsStrategy.java | 73 ++ .../datacollect/strategy/CrawlStrategy.java | 12 + .../datacollect/strategy/HnuNewsStrategy.java | 65 ++ .../datacollect/strategy/NewsStrategy.java | 43 ++ .../datacollect/strategy/StrategyFactory.java | 58 ++ .../datacollect/strategy/WeatherStrategy.java | 94 +++ .../strategy/WeiboHotStrategy.java | 77 ++ .../example/datacollect/view/ConsoleView.java | 52 ++ .../java-cli/src/main/resources/logback.xml | 27 + .../java1/java-cli/target/classes/logback.xml | 27 + .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 22 + .../compile/default-compile/inputFiles.lst | 21 + ...设计模式:灵活性与可扩展性.md | 705 ++++++++++++++++++ project/java1/logs/crawler.2026-05-19.log | 358 +++++++++ project/java1/logs/crawler.2026-05-29.log | 10 + project/java1/logs/crawler.log | 295 ++++++++ 34 files changed, 3052 insertions(+) create mode 100644 project/202506050226-李梓帆-期末实验报告报告.docx create mode 100644 project/java1/java-cli/.gitignore create mode 100644 project/java1/java-cli/W10 PPT.md create mode 100644 project/java1/java-cli/pom.xml create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/Main.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/command/Command.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/command/CrawlCommand.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/command/ExitCommand.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/command/HelpCommand.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/command/ListCommand.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/controller/CrawlerController.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/exception/CrawlerException.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/exception/NetworkException.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/exception/ParseException.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/model/Article.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/BlogStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CctvNewsStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CrawlStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/HnuNewsStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/NewsStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/StrategyFactory.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeatherStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeiboHotStrategy.java create mode 100644 project/java1/java-cli/src/main/java/com/example/datacollect/view/ConsoleView.java create mode 100644 project/java1/java-cli/src/main/resources/logback.xml create mode 100644 project/java1/java-cli/target/classes/logback.xml create mode 100644 project/java1/java-cli/target/maven-archiver/pom.properties create mode 100644 project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 project/java1/java-cli/第10周——设计模式:灵活性与可扩展性.md create mode 100644 project/java1/logs/crawler.2026-05-19.log create mode 100644 project/java1/logs/crawler.2026-05-29.log create mode 100644 project/java1/logs/crawler.log diff --git a/project/202506050226-李梓帆-期末实验报告报告.docx b/project/202506050226-李梓帆-期末实验报告报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..71211cc912925770a4b8f70321b8e88e4966e3a0 GIT binary patch literal 418362 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 z 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�T8=7aB^v`XyS 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 U-$H!91?>iY#(-0tk{R*wUzw$o761SM literal 0 HcmV?d00001 diff --git a/project/java1/java-cli/.gitignore b/project/java1/java-cli/.gitignore new file mode 100644 index 0000000..0ebcf1a --- /dev/null +++ b/project/java1/java-cli/.gitignore @@ -0,0 +1,4 @@ +*.jar +*.jar +*.class +*.log \ No newline at end of file diff --git a/project/java1/java-cli/W10 PPT.md b/project/java1/java-cli/W10 PPT.md new file mode 100644 index 0000000..d4ba310 --- /dev/null +++ b/project/java1/java-cli/W10 PPT.md @@ -0,0 +1,492 @@ +--- +id: "24" +title: w10-设计模式 +slug: w10-design-patterns +status: draft +view_count: 0 +created_at: 2026-05-07T12:00:00+08:00 +updated_at: 2026-05-07T14:00:00.000000000+08:00 +--- + +# 高级程序设计 · 第10周 + +### 设计模式:灵活性与可扩展性 + +### 策略模式 + 工厂 + Repository 实战 + +--- + +### 📌 本周导航 + +- W9回顾:骨架的成就与隐患 +- 策略模式:解析器的“插头标准” +- 解析器工厂:自动匹配的魔法 +- Repository:武装数据访问 +- 整体架构串联:调用链全程 +- 代码落地 + 实践任务 +- 架构反思 + W11 预告 + +--- + +## 1️⃣ W9回顾:骨架的成就与隐患 + +### 我们建了一座漂亮的房子 + +- ✅ MVC 分层清晰 +- ✅ Command 模式:**新增命令,Controller 零改动** +- ✅ 所有输出走 `ConsoleView` +- ✅ 工程包结构标准 + +--- + +### 但问题也随之而来 + +```java +// CrawlCommand 里解析逻辑怎么办? +if (url.contains("blog.example.com")) { + // 博客解析... +} else if (url.contains("news.example.com")) { + // 新闻解析... +} else { + view.printError("Unsupported website!"); +} +``` + +> 😫 每支持一个新网站,就要加一个 `else if` + +--- + +### 还有另一个“裸奔”的数据 + +```java +List
articles = new ArrayList<>(); +// 所有 Command 都可以: +articles.clear(); +articles.add(null); +articles.remove(0); +``` + +> 🚨 数据没有任何保护,靠口头约定是靠不住的 + +--- + +### 本周任务 + +1. **解析逻辑可插拔** → 策略模式 + 工厂 +2. **数据访问加守卫** → Repository 模式 + +> W9 搭骨架,W10 装盔甲 + +--- + +## 2️⃣ 策略模式:解析器的“插头标准” + +### 墙上的插座,为什么什么电器都能插? + +- **三孔插座** 是标准接口 +- 电视、电脑、手机充电器都实现这个接口 +- 插座不关心你是什么电器 + +--- + +### 爬虫的世界也一样 + +- `CrawlStrategy` = 插座接口 +- `BlogStrategy`、`NewsStrategy` = 具体电器 +- `CrawlCommand` = 使用电器的人 +- `StrategyFactory` = 插座面板 + +--- + +### 接口即合同 + +```java +public interface CrawlStrategy { + List
parse(String url, Document doc); + boolean supports(String url); +} +``` + +- `supports()`:我能不能处理这个 URL? +- `parse()`:怎么解析? +- **任何网站想被爬,签这份合同!** + +--- + +### 策略 vs 硬编码 + +| 维度 | if-else 屎山 | 策略模式 | +|------|-------------|----------| +| 新增网站 | 改 Command | 新建策略类 | +| 修改解析 | 翻找 else if | 只改对应类 | +| 测试 | 启动整个爬虫 | 单独测策略 | +| 开闭原则 | ❌ 修改开放 | ✅ 扩展开放,修改关闭 | + +--- + +### 具体策略示例 + +```java +public class BlogStrategy implements CrawlStrategy { + public boolean supports(String url) { + return url.contains("blog.example.com"); + } + public List
parse(String url, Document doc) { + List
articles = new ArrayList<>(); + for (Element e : doc.select(".post-title")) { + articles.add(new Article(e.text(), url, "")); + } + return articles; + } +} +``` + +> ✨ 一个新网站,一个独立类,各扫门前雪 + +--- + +## 3️⃣ 解析器工厂:自动匹配的魔法 + +### 谁来选择策略? + +- 如果 `CrawlCommand` 遍历所有策略 → 策略模式白用了 +- 我们需要一个黑盒子:**丢入 URL,返回合适的解析器** + +--- + +### 工厂登场 + +```java +public class StrategyFactory { + private final List strategies = new ArrayList<>(); + + public StrategyFactory() { + strategies.add(new BlogStrategy()); + strategies.add(new NewsStrategy()); + } + + public CrawlStrategy getStrategy(String url) { + for (CrawlStrategy s : strategies) { + if (s.supports(url)) return s; + } + return null; + } +} +``` + +> 🔧 新增网站只需:新建策略类 + 工厂里注册一行 + +--- + +### 开闭原则的胜利 + +- ✅ `CrawlCommand` 完全不改 +- ✅ 新增 `XxxStrategy` 和一行注册 +- ✅ 所有策略的调用方式完全一致 + +> 这就是 **“对扩展开放,对修改关闭”** + +--- + +### 重构后的 CrawlCommand + +```java +public void execute(String[] args, ArticleRepository repository) { + String url = args[1]; + CrawlStrategy strategy = strategyFactory.getStrategy(url); + if (strategy == null) { + view.printError("No strategy for: " + url); + return; + } + Document doc = Jsoup.connect(url).get(); + List
parsed = strategy.parse(url, doc); + for (Article a : parsed) { + repository.add(a); + } + view.printSuccess("Crawled " + parsed.size() + " articles."); +} +``` + +> 🧠 CrawlCommand 现在只做 **“调度”**,不做解析 + +--- + +## 4️⃣ Repository:武装数据访问 + +### 共享 List 的问题 + +```java +articles.clear(); // 清空 +articles.add(null); // 塞 null +articles.remove(0); // 随意删除 +``` + +> 靠约定维护的秩序,终将被打破 + +--- + +### 给数据装上防盗门 + +```java +public class ArticleRepository { + private final List
articles = new ArrayList<>(); + + public void add(Article article) { + if (article == null) throw new IllegalArgumentException(...); + articles.add(article); + } + + public List
getAll() { + return Collections.unmodifiableList(articles); + } + + public int size() { return articles.size(); } + + public void clear() { articles.clear(); } +} +``` + +--- + +### 三道防线 + +| 机制 | 作用 | +|------|------| +| **add 拒绝 null** | 规则写在代码里,不靠口头约定 | +| **getAll 返回不可变视图** | 任何修改立即抛异常 | +| **必须通过 repository 访问** | 封装内部结构,只暴露安全方法 | + +--- + +### 所有 Command 签名改变 + +```java +// W9 +public void execute(String[] args, List
articles); + +// W10 +public void execute(String[] args, ArticleRepository repository); +``` + +> 语义变化:从“给你数据随便玩” → “给你安全的存取通道” + +--- + +## 5️⃣ 整体架构串联 + +### 一个 `crawl` 命令的完整旅程 + +``` +用户输入 "crawl https://blog.example.com" + ↓ +ConsoleView 解析 + ↓ +Controller 路由 → CrawlCommand + ↓ +StrategyFactory.getStrategy(url) → BlogStrategy + ↓ +Jsoup 抓取 → Document + ↓ +BlogStrategy.parse(url, doc) → List
+ ↓ +Repository.add() 存储 + ↓ +ConsoleView 输出成功信息 +``` + +--- + +### 架构全景图 + +![mvc-strategy-repo](/api/v1/attachments/8 "width=70% center") + +```mermaid +flowchart TD + User(["👤 用户输入
crawl https://blog.example.com"]) --> View + + subgraph View["🎨 View 层 (ConsoleView)"] + ReadLine["readLine()"] + Display["display() / printSuccess()"] + end + + ReadLine --> Controller + + subgraph Controller["🧭 Controller 层"] + Router["CrawlerController
Map 路由"] + end + + Router --> Command + + subgraph Command["⚡ Command 层"] + CrawlCmd["CrawlCommand
(调度者)"] + end + + CrawlCmd --> Factory + + subgraph Strategy["🧩 Strategy 层"] + Factory["StrategyFactory
(自动匹配)"] + StrategyI["<> CrawlStrategy"] + BlogS["BlogStrategy"] + NewsS["NewsStrategy"] + Factory --> StrategyI --> BlogS + StrategyI --> NewsS + end + + BlogS --> Repository + + subgraph Repository["🔐 Repository 层"] + Repo["ArticleRepository
(add / getAll)"] + RepoList["List
(私有)"] + Repo --> RepoList + end + + RepoList --> Model + + subgraph Model["📦 Model 层"] + Article["Article"] + end + + CrawlCmd --> Display + Repository --> Display +``` + +> 🗺️ 每一层都有清晰的职责,每一处扩展都只需要新增而不是修改 + +--- + +## 6️⃣ 代码落地(分步升级) + +### 从 W9 升级到 W10 的改动清单 + +1. 新建 `strategy/` 包 → `CrawlStrategy` 接口 +2. 实现 `BlogStrategy`、`NewsStrategy` +3. 实现 `StrategyFactory` +4. 新建 `repository/` 包 → `ArticleRepository` +5. 修改 `Command` 接口签名 +6. 重写 `CrawlCommand` +7. 调整其他所有 `Command` +8. 调整 `Controller` 和 `App.java` + +--- + +### 关键代码演示 + +- `Collections.unmodifiableList()` 的用法 +- `StrategyFactory.getStrategy()` 的遍历逻辑 +- `CrawlCommand` 从“写死解析”到“调度组装” + +```java +// 一个改动示例 +for (Article a : parsed) { + repository.add(a); // 旧: articles.add(a); +} +``` + +--- + +### 找茬点 + +- `StrategyFactory` 没匹配到策略时返回 `null` +- `CrawlCommand` 检查 `null` 并报错 +- 有没有更优雅的方式避免 `null` 判断? + +> 🔍 课后用 AI 探索 “空对象模式” 的前奏 + +--- + +## 7️⃣ 架构反思 + 下周预告 + +### 当前架构的脆弱点 + +- ❌ 异常处理单一笼统 +- ❌ 没有重试机制 +- ❌ 网络超时无控制 +- ❌ 日志仅输出到终端 + +--- + +### W11 目标:健壮性工程 + +- ✅ **自定义异常体系**:把“出错了”变成具体的业务异常 +- ✅ **工程化日志**:记录谁、什么时间、做了什么 +- ✅ **防御式编程 + 重试机制**:网络抖动不再致命 + +> W9 搭骨架 → W10 装盔甲 → W11 让它经得起毒打 + +--- + +## 8️⃣ 实践任务(现场) + +### 必做 + +1. 基于 W9 项目升级到 W10 +2. 至少实现 2 个 CrawlStrategy(可模拟) +3. 实现 `StrategyFactory` 和 `ArticleRepository` +4. 测试完整 `crawl` → `list` 流程 + +### 验收标准 + +- [ ] 新增策略只加类+注册,零改动旧代码 +- [ ] `getAll()` 返回不可修改视图 +- [ ] `CrawlCommand` 不含网站特定解析 +- [ ] 所有 Command 用 Repository +- [ ] 无地方直接操作 `List
` + +--- + +## 9️⃣ 课后作业 + +### 必做 + +1. 完善 `ArticleRepository`:增加 `addAll`,防御 null +2. **★ AnalyzeCommand**:复用策略解析但不存储,输出统计信息 +3. **AI 架构审计**:发送类签名给 AI,检查策略解耦与封装 + +### 选做 + +- 正则策略匹配、默认策略、策略优先级 +- 思考题:两个策略都 `supports` 同一 URL 时怎么办? + +--- + +## 🤖 AI 协同升级 + +### 架构审计师(必做) + +- 画出类依赖图 +- 发给 AI:“检查开闭原则达成度,Repository 封装完备性,是否存在循环依赖” + +### 进阶探究 + +- 不用工厂,直接用 `Map` 存起来 vs `StrategyFactory` 的区别? + +--- + +## 📚 总结 + +- ✅ 策略模式:算法可插拔,新增网站零痛苦 +- ✅ 工厂:自动匹配,URL → 策略的魔法 +- ✅ Repository:数据守卫,规则从口头约定变成代码强制 +- ✅ 架构:从“分开”到“优雅合上”,对扩展开放,对修改关闭 + +### W11 预告 + +自定义异常体系 + 日志 + 重试机制 + +> 🚀 让我们造的爬虫,经得住现实的考验 + +--- + +## 谢谢! + +**保持工程洁癖,下周见!** + +--- + +# 居中标题 + +## 居中副标题 + +### 居中内容 + +--- \ No newline at end of file diff --git a/project/java1/java-cli/pom.xml b/project/java1/java-cli/pom.xml new file mode 100644 index 0000000..39e0eb1 --- /dev/null +++ b/project/java1/java-cli/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + com.example + datacollect-cli + 0.1.0 + + 11 + 11 + + + + org.jsoup + jsoup + 1.17.2 + + + ch.qos.logback + logback-classic + 1.4.11 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + + com.example.datacollect.Main + + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/Main.java b/project/java1/java-cli/src/main/java/com/example/datacollect/Main.java new file mode 100644 index 0000000..385911b --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/Main.java @@ -0,0 +1,113 @@ +package com.example.datacollect; + +import com.example.datacollect.controller.CrawlerController; +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.strategy.CrawlStrategy; +import com.example.datacollect.strategy.StrategyFactory; +import com.example.datacollect.view.ConsoleView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Main { + private static final Logger logger = LoggerFactory.getLogger(Main.class); + + public static void main(String[] args) { + logger.info("Starting CLI Crawler application"); + + ConsoleView view = new ConsoleView(); + ArticleRepository repository = new ArticleRepository(); + StrategyFactory strategyFactory = new StrategyFactory(); + + if (args.length > 0 && "-test".equals(args[0])) { + logger.info("Running in test mode"); + runTest(view, repository, strategyFactory); + return; + } + + CrawlerController controller = new CrawlerController(view, repository, strategyFactory); + + view.printSuccess("Welcome to CLI Crawler (w10_3)! Type help for commands."); + logger.info("Application ready, waiting for input"); + + while (true) { + controller.handle(view.readLine()); + } + } + + private static void runTest(ConsoleView view, ArticleRepository repository, StrategyFactory strategyFactory) { + strategyFactory.register(new MockStrategy()); + + CrawlerController controller = new CrawlerController(view, repository, strategyFactory); + + view.printSuccess("=== 测试完整 crawl → list 流程 ==="); + + view.printInfo("\n1. 测试空列表状态:"); + controller.handle("list"); + + view.printInfo("\n2. 测试无效 URL(无匹配策略):"); + controller.handle("crawl https://unknown.example.com"); + + view.printInfo("\n3. 测试爬取 mock.example.com:"); + controller.handle("crawl https://mock.example.com"); + + view.printInfo("\n4. 测试 list 显示爬取结果:"); + controller.handle("list"); + + view.printInfo("\n5. 测试爬取 blog.example.com:"); + controller.handle("crawl https://blog.example.com"); + + view.printInfo("\n6. 测试 list 显示累计结果:"); + controller.handle("list"); + + view.printInfo("\n7. 测试 getAll() 返回不可修改视图:"); + testUnmodifiableView(repository); + + view.printInfo("\n8. 测试 Repository 防御检查:"); + testRepositoryDefense(repository); + + view.printSuccess("\n=== 测试完成 ==="); + } + + private static void testUnmodifiableView(ArticleRepository repository) { + try { + repository.getAll().add(new Article("Test", "http://test.com", "")); + System.out.println("ERROR: 应该抛出 UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + System.out.println("SUCCESS: getAll() 返回不可修改视图,正确抛出异常"); + } + } + + private static void testRepositoryDefense(ArticleRepository repository) { + try { + repository.add(null); + System.out.println("ERROR: 应该抛出 NullPointerException"); + } catch (NullPointerException e) { + System.out.println("SUCCESS: 添加 null 文章正确抛出异常"); + } + + try { + repository.add(new Article("", "http://test.com", "")); + System.out.println("ERROR: 应该抛出 IllegalArgumentException"); + } catch (IllegalArgumentException e) { + System.out.println("SUCCESS: 添加空标题文章正确抛出异常"); + } + } + + public static class MockStrategy implements CrawlStrategy { + @Override + public boolean supports(String url) { + return url != null && url.contains("mock.example.com"); + } + + @Override + public java.util.List
parse(String url, org.jsoup.nodes.Document doc) throws ParseException { + java.util.List
articles = new java.util.ArrayList<>(); + articles.add(new Article("模拟文章 1", url + "/article1", "模拟内容 1")); + articles.add(new Article("模拟文章 2", url + "/article2", "模拟内容 2")); + articles.add(new Article("模拟文章 3", url + "/article3", "模拟内容 3")); + return articles; + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/command/Command.java b/project/java1/java-cli/src/main/java/com/example/datacollect/command/Command.java new file mode 100644 index 0000000..029cadc --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/command/Command.java @@ -0,0 +1,8 @@ +package com.example.datacollect.command; + +import com.example.datacollect.repository.ArticleRepository; + +public interface Command { + String getName(); + void execute(String[] args, ArticleRepository repository); +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/command/CrawlCommand.java b/project/java1/java-cli/src/main/java/com/example/datacollect/command/CrawlCommand.java new file mode 100644 index 0000000..35e86d3 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/command/CrawlCommand.java @@ -0,0 +1,96 @@ +package com.example.datacollect.command; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.strategy.CrawlStrategy; +import com.example.datacollect.strategy.StrategyFactory; +import com.example.datacollect.view.ConsoleView; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CrawlCommand implements Command { + private static final Logger logger = LoggerFactory.getLogger(CrawlCommand.class); + private static final int MAX_RETRY = 3; + private static final long RETRY_DELAY_MS = 1000; + + private final ConsoleView view; + private final StrategyFactory strategyFactory; + + public CrawlCommand(ConsoleView view, StrategyFactory strategyFactory) { + this.view = view; + this.strategyFactory = strategyFactory; + } + + @Override + public String getName() { + return "crawl"; + } + + @Override + public void execute(String[] args, ArticleRepository repository) { + if (args.length < 2) { + String errorMsg = "Usage: crawl "; + logger.warn(errorMsg); + view.printError(errorMsg); + return; + } + String url = args[1]; + logger.info("Crawl started for: {}", url); + + CrawlStrategy strategy = strategyFactory.getStrategy(url); + if (strategy == null) { + String errorMsg = "No strategy found for: " + url; + logger.warn(errorMsg); + view.printError(errorMsg); + return; + } + + logger.info("Starting crawl for URL: {}", url); + view.printInfo("Crawling: " + url); + + Document doc = null; + int attempt = 0; + boolean success = false; + + while (attempt < MAX_RETRY && !success) { + attempt++; + try { + logger.debug("Attempt {} to fetch URL: {}", attempt, url); + doc = Jsoup.connect(url).get(); + success = true; + } catch (Exception e) { + logger.warn("Attempt {} failed for URL {}: {}", attempt, url, e.getMessage()); + if (attempt < MAX_RETRY) { + logger.info("Retrying in {}ms...", RETRY_DELAY_MS); + try { + Thread.sleep(RETRY_DELAY_MS); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + break; + } + } + } + } + + if (!success) { + String errorMsg = "Failed to fetch URL after " + MAX_RETRY + " attempts: " + url; + logger.error(errorMsg); + view.printError(errorMsg); + return; + } + + try { + var articles = strategy.parse(url, doc); + for (var article : articles) { + repository.add(article); + } + logger.info("Successfully crawled {} articles from {}", articles.size(), url); + view.printSuccess("Crawled " + articles.size() + " articles."); + } catch (ParseException e) { + logger.error("Parse error for URL {}: {}", url, e.getMessage(), e); + view.printError("Parse error: " + e.getMessage()); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/command/ExitCommand.java b/project/java1/java-cli/src/main/java/com/example/datacollect/command/ExitCommand.java new file mode 100644 index 0000000..51ee001 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/command/ExitCommand.java @@ -0,0 +1,28 @@ +package com.example.datacollect.command; + +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.view.ConsoleView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ExitCommand implements Command { + private static final Logger logger = LoggerFactory.getLogger(ExitCommand.class); + + private final ConsoleView view; + + public ExitCommand(ConsoleView view) { + this.view = view; + } + + @Override + public String getName() { + return "exit"; + } + + @Override + public void execute(String[] args, ArticleRepository repository) { + logger.info("Exiting application"); + view.printSuccess("Bye!"); + System.exit(0); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/command/HelpCommand.java b/project/java1/java-cli/src/main/java/com/example/datacollect/command/HelpCommand.java new file mode 100644 index 0000000..932c1db --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/command/HelpCommand.java @@ -0,0 +1,27 @@ +package com.example.datacollect.command; + +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.view.ConsoleView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HelpCommand implements Command { + private static final Logger logger = LoggerFactory.getLogger(HelpCommand.class); + + private final ConsoleView view; + + public HelpCommand(ConsoleView view) { + this.view = view; + } + + @Override + public String getName() { + return "help"; + } + + @Override + public void execute(String[] args, ArticleRepository repository) { + logger.debug("Displaying help"); + view.printInfo("Commands: crawl , list, help, exit"); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/command/ListCommand.java b/project/java1/java-cli/src/main/java/com/example/datacollect/command/ListCommand.java new file mode 100644 index 0000000..2b6998e --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/command/ListCommand.java @@ -0,0 +1,27 @@ +package com.example.datacollect.command; + +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.view.ConsoleView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ListCommand implements Command { + private static final Logger logger = LoggerFactory.getLogger(ListCommand.class); + + private final ConsoleView view; + + public ListCommand(ConsoleView view) { + this.view = view; + } + + @Override + public String getName() { + return "list"; + } + + @Override + public void execute(String[] args, ArticleRepository repository) { + logger.debug("Listing articles"); + view.display(repository.getAll()); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/controller/CrawlerController.java b/project/java1/java-cli/src/main/java/com/example/datacollect/controller/CrawlerController.java new file mode 100644 index 0000000..a91901d --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/controller/CrawlerController.java @@ -0,0 +1,57 @@ +package com.example.datacollect.controller; + +import com.example.datacollect.command.Command; +import com.example.datacollect.command.CrawlCommand; +import com.example.datacollect.command.ExitCommand; +import com.example.datacollect.command.HelpCommand; +import com.example.datacollect.command.ListCommand; +import com.example.datacollect.repository.ArticleRepository; +import com.example.datacollect.strategy.StrategyFactory; +import com.example.datacollect.view.ConsoleView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +public class CrawlerController { + private static final Logger logger = LoggerFactory.getLogger(CrawlerController.class); + + private final Map commands = new HashMap<>(); + private final ConsoleView view; + private final ArticleRepository repository; + + public CrawlerController(ConsoleView view, ArticleRepository repository, StrategyFactory strategyFactory) { + this.view = view; + this.repository = repository; + register(new HelpCommand(view)); + register(new ListCommand(view)); + register(new CrawlCommand(view, strategyFactory)); + register(new ExitCommand(view)); + logger.info("CrawlerController initialized with {} commands", commands.size()); + } + + private void register(Command command) { + commands.put(command.getName(), command); + logger.debug("Registered command: {}", command.getName()); + } + + public void handle(String input) { + String text = input == null ? "" : input.trim(); + if (text.isEmpty()) { + return; + } + + String[] args = text.split("\\s+"); + String cmdName = args[0].toLowerCase(); + Command command = commands.get(cmdName); + if (command == null) { + String errorMsg = "Unknown command: " + cmdName; + logger.warn(errorMsg); + view.printError(errorMsg); + return; + } + logger.debug("Executing command: {}", cmdName); + command.execute(args, repository); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/exception/CrawlerException.java b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/CrawlerException.java new file mode 100644 index 0000000..bde38fd --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/CrawlerException.java @@ -0,0 +1,11 @@ +package com.example.datacollect.exception; + +public class CrawlerException extends Exception { + public CrawlerException(String message) { + super(message); + } + + public CrawlerException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/exception/NetworkException.java b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/NetworkException.java new file mode 100644 index 0000000..b80f1bb --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/NetworkException.java @@ -0,0 +1,11 @@ +package com.example.datacollect.exception; + +public class NetworkException extends CrawlerException { + public NetworkException(String message) { + super(message); + } + + public NetworkException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/exception/ParseException.java b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/ParseException.java new file mode 100644 index 0000000..ef4c5a1 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/exception/ParseException.java @@ -0,0 +1,11 @@ +package com.example.datacollect.exception; + +public class ParseException extends CrawlerException { + public ParseException(String message) { + super(message); + } + + public ParseException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/model/Article.java b/project/java1/java-cli/src/main/java/com/example/datacollect/model/Article.java new file mode 100644 index 0000000..147dbe6 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/model/Article.java @@ -0,0 +1,45 @@ +package com.example.datacollect.model; + +public class Article { + private String title; + private String url; + private String content; + + public Article(String title, String url, String content) { + this.title = title; + this.url = url; + this.content = content; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @Override + public String toString() { + return "Article{" + + "title='" + title + '\'' + + ", url='" + url + '\'' + + '}'; + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java b/project/java1/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java new file mode 100644 index 0000000..6e3577c --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/repository/ArticleRepository.java @@ -0,0 +1,80 @@ +package com.example.datacollect.repository; + +import com.example.datacollect.model.Article; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +public class ArticleRepository { + private static final Logger logger = LoggerFactory.getLogger(ArticleRepository.class); + + private final List
articles = new ArrayList<>(); + + public void add(Article article) { + Objects.requireNonNull(article, "Article cannot be null"); + + if (article.getTitle() == null || article.getTitle().trim().isEmpty()) { + logger.warn("Attempted to add article with empty title"); + throw new IllegalArgumentException("Article title cannot be null or empty"); + } + + if (article.getUrl() == null || article.getUrl().trim().isEmpty()) { + logger.warn("Attempted to add article with empty URL"); + throw new IllegalArgumentException("Article URL cannot be null or empty"); + } + + articles.add(article); + logger.debug("Added article: {}", article.getTitle()); + } + + public void addAll(List
articleList) { + Objects.requireNonNull(articleList, "Article list cannot be null"); + + if (articleList.isEmpty()) { + logger.debug("Empty article list provided, nothing to add"); + return; + } + + for (Article article : articleList) { + add(article); + } + logger.info("Added {} articles", articleList.size()); + } + + public List
getAll() { + List
result = Collections.unmodifiableList(articles); + logger.debug("Returning {} articles (unmodifiable)", result.size()); + return result; + } + + public Article get(int index) { + if (index < 0 || index >= articles.size()) { + logger.warn("Index out of bounds: {} (size: {})", index, articles.size()); + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + articles.size()); + } + return articles.get(index); + } + + public int size() { + return articles.size(); + } + + public boolean isEmpty() { + return articles.isEmpty(); + } + + public void clear() { + int size = articles.size(); + articles.clear(); + logger.info("Cleared {} articles", size); + } + + public boolean contains(Article article) { + Objects.requireNonNull(article, "Article cannot be null"); + return articles.contains(article); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/BlogStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/BlogStrategy.java new file mode 100644 index 0000000..40ccabb --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/BlogStrategy.java @@ -0,0 +1,43 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class BlogStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(BlogStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && url.contains("blog.example.com"); + logger.debug("BlogStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing blog page: {}", url); + List
articles = new ArrayList<>(); + Elements titles = doc.select(".post-title"); + logger.debug("Found {} titles", titles.size()); + + for (Element e : titles) { + articles.add(new Article(e.text(), url, "")); + } + + logger.info("Parsed {} articles from blog", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse blog page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse blog page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CctvNewsStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CctvNewsStrategy.java new file mode 100644 index 0000000..fe53673 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CctvNewsStrategy.java @@ -0,0 +1,73 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class CctvNewsStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(CctvNewsStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && url.contains("tv.cctv.com"); + logger.debug("CctvNewsStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing CCTV news page: {}", url); + List
articles = new ArrayList<>(); + + Elements newsItems = doc.select("div.list_item"); + logger.debug("Found {} news items", newsItems.size()); + + for (Element item : newsItems) { + Element titleEl = item.selectFirst("a.title"); + Element descEl = item.selectFirst("p.description"); + + if (titleEl != null) { + String title = titleEl.text().trim(); + String articleUrl = titleEl.attr("href"); + if (!articleUrl.startsWith("http")) { + articleUrl = "https://news.cctv.com" + articleUrl; + } + String content = descEl != null ? descEl.text().trim() : ""; + + if (!title.isEmpty()) { + articles.add(new Article(title, articleUrl, content)); + } + } + } + + if (articles.isEmpty()) { + Elements listItems = doc.select("li"); + for (Element item : listItems) { + Element link = item.selectFirst("a"); + if (link != null) { + String title = link.text().trim(); + String articleUrl = link.attr("abs:href"); + + if (!title.isEmpty() && articleUrl != null && !articleUrl.isEmpty()) { + articles.add(new Article(title, articleUrl, "")); + } + } + } + } + + logger.info("Parsed {} news from CCTV", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse CCTV news page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse CCTV news page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CrawlStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CrawlStrategy.java new file mode 100644 index 0000000..71dab50 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/CrawlStrategy.java @@ -0,0 +1,12 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; + +import java.util.List; + +public interface CrawlStrategy { + List
parse(String url, Document doc) throws ParseException; + boolean supports(String url); +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/HnuNewsStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/HnuNewsStrategy.java new file mode 100644 index 0000000..74d6bc6 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/HnuNewsStrategy.java @@ -0,0 +1,65 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class HnuNewsStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(HnuNewsStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && url.contains("news.hnu.edu.cn"); + logger.debug("HnuNewsStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing Hnu news page: {}", url); + List
articles = new ArrayList<>(); + Elements listItems = doc.select("ul.list11 li"); + logger.debug("Found {} list items", listItems.size()); + + for (Element li : listItems) { + Element link = li.selectFirst("a"); + if (link == null) continue; + + String articleUrl = link.attr("href"); + if (!articleUrl.startsWith("http")) { + articleUrl = "https://news.hnu.edu.cn" + articleUrl.replace("..", ""); + } + + String title = ""; + Element titleEl = link.selectFirst("h4.l2.h4s2"); + if (titleEl != null) { + title = titleEl.text().trim(); + } + + String content = ""; + Element contentEl = link.selectFirst("p.l3.ps3"); + if (contentEl != null) { + content = contentEl.text().trim(); + } + + if (!title.isEmpty()) { + articles.add(new Article(title, articleUrl, content)); + } + } + + logger.info("Parsed {} articles from Hnu news", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse Hnu news page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse Hnu news page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/NewsStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/NewsStrategy.java new file mode 100644 index 0000000..7117197 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/NewsStrategy.java @@ -0,0 +1,43 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class NewsStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(NewsStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && url.contains("news.example.com"); + logger.debug("NewsStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing news page: {}", url); + List
articles = new ArrayList<>(); + Elements items = doc.select(".article-headline"); + logger.debug("Found {} headlines", items.size()); + + for (Element e : items) { + articles.add(new Article(e.text(), url, "")); + } + + logger.info("Parsed {} articles from news", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse news page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse news page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/StrategyFactory.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/StrategyFactory.java new file mode 100644 index 0000000..fde9020 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/StrategyFactory.java @@ -0,0 +1,58 @@ +package com.example.datacollect.strategy; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class StrategyFactory { + private static final Logger logger = LoggerFactory.getLogger(StrategyFactory.class); + + private final List strategies = new ArrayList<>(); + + public StrategyFactory() { + strategies.add(new HnuNewsStrategy()); + strategies.add(new BlogStrategy()); + strategies.add(new NewsStrategy()); + strategies.add(new WeiboHotStrategy()); + strategies.add(new CctvNewsStrategy()); + strategies.add(new WeatherStrategy()); + logger.info("StrategyFactory initialized with {} strategies", strategies.size()); + } + + public CrawlStrategy getStrategy(String url) { + Objects.requireNonNull(url, "URL cannot be null"); + + if (url.trim().isEmpty()) { + logger.warn("Empty URL provided"); + return null; + } + + for (CrawlStrategy s : strategies) { + if (s.supports(url)) { + logger.debug("Found strategy {} for URL: {}", s.getClass().getSimpleName(), url); + return s; + } + } + logger.warn("No strategy found for URL: {}", url); + return null; + } + + public void register(CrawlStrategy strategy) { + Objects.requireNonNull(strategy, "Strategy cannot be null"); + + if (strategies.contains(strategy)) { + logger.warn("Strategy {} already registered", strategy.getClass().getSimpleName()); + return; + } + + strategies.add(strategy); + logger.info("Registered strategy: {}", strategy.getClass().getSimpleName()); + } + + public int getStrategyCount() { + return strategies.size(); + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeatherStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeatherStrategy.java new file mode 100644 index 0000000..3f4d1bb --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeatherStrategy.java @@ -0,0 +1,94 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +public class WeatherStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(WeatherStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && (url.contains("weather") || url.contains("tianqi")); + logger.debug("WeatherStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing weather page: {}", url); + List
articles = new ArrayList<>(); + + String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")); + + Elements weatherCards = doc.select("div.today"); + if (!weatherCards.isEmpty()) { + Element todayCard = weatherCards.first(); + String city = "长沙"; + + Element tempEl = todayCard.selectFirst("span.temperature"); + Element weatherEl = todayCard.selectFirst("span.weather"); + Element windEl = todayCard.selectFirst("span.wind"); + + String temp = tempEl != null ? tempEl.text().trim() : ""; + String weather = weatherEl != null ? weatherEl.text().trim() : ""; + String wind = windEl != null ? windEl.text().trim() : ""; + + String title = today + " " + city + "天气"; + String content = "温度: " + temp + ", 天气: " + weather + ", 风力: " + wind; + articles.add(new Article(title, url, content)); + } else { + Elements temps = doc.select("div.temp"); + Elements weathers = doc.select("div.weather"); + + if (!temps.isEmpty()) { + String city = "长沙"; + String temp = temps.first().text().trim(); + String weather = weathers.isEmpty() ? "" : weathers.first().text().trim(); + + String title = today + " " + city + "天气"; + String content = "温度: " + temp + ", 天气状况: " + weather; + articles.add(new Article(title, url, content)); + } else { + String city = "长沙"; + String title = today + " " + city + "天气"; + String content = "今日温度:待更新,天气状况:待更新"; + articles.add(new Article(title, url, content)); + } + } + + Elements forecastItems = doc.select("div.forecast-item"); + for (Element item : forecastItems) { + Element dateEl = item.selectFirst("span.date"); + Element weatherEl = item.selectFirst("span.weather"); + Element tempEl = item.selectFirst("span.temp"); + + if (dateEl != null) { + String date = dateEl.text().trim(); + String weather = weatherEl != null ? weatherEl.text().trim() : ""; + String temp = tempEl != null ? tempEl.text().trim() : ""; + + String title = date + " 天气预告"; + String content = "天气: " + weather + ", 温度: " + temp; + articles.add(new Article(title, url, content)); + } + } + + logger.info("Parsed {} weather items", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse weather page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse weather page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeiboHotStrategy.java b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeiboHotStrategy.java new file mode 100644 index 0000000..c2075fd --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/strategy/WeiboHotStrategy.java @@ -0,0 +1,77 @@ +package com.example.datacollect.strategy; + +import com.example.datacollect.exception.ParseException; +import com.example.datacollect.model.Article; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class WeiboHotStrategy implements CrawlStrategy { + private static final Logger logger = LoggerFactory.getLogger(WeiboHotStrategy.class); + + @Override + public boolean supports(String url) { + boolean supported = url != null && url.contains("weibo.com"); + logger.debug("WeiboHotStrategy supports URL {}: {}", url, supported); + return supported; + } + + @Override + public List
parse(String url, Document doc) throws ParseException { + try { + logger.debug("Parsing Weibo hot page: {}", url); + List
articles = new ArrayList<>(); + + Elements hotItems = doc.select("div[class*=HotTopic_item]"); + logger.debug("Found {} hot items", hotItems.size()); + + for (Element item : hotItems) { + Element titleEl = item.selectFirst("a[class*=HotTopic_title]"); + Element hotEl = item.selectFirst("span[class*=HotTopic_hot]"); + + if (titleEl != null) { + String title = titleEl.text().trim(); + String hotUrl = "https://s.weibo.com" + titleEl.attr("href"); + String hotValue = hotEl != null ? hotEl.text().trim() : ""; + + if (!title.isEmpty()) { + String content = "热度: " + hotValue; + articles.add(new Article(title, hotUrl, content)); + } + } + } + + if (articles.isEmpty()) { + Elements cards = doc.select("div.card-wrap"); + for (Element card : cards) { + Element titleEl = card.selectFirst("a.title"); + Element descEl = card.selectFirst("p.desc"); + + if (titleEl != null) { + String title = titleEl.text().trim(); + String articleUrl = titleEl.attr("href"); + if (!articleUrl.startsWith("http")) { + articleUrl = "https://s.weibo.com" + articleUrl; + } + String content = descEl != null ? descEl.text().trim() : ""; + + if (!title.isEmpty()) { + articles.add(new Article(title, articleUrl, content)); + } + } + } + } + + logger.info("Parsed {} hot topics from Weibo", articles.size()); + return articles; + } catch (Exception e) { + logger.error("Failed to parse Weibo hot page: {}", e.getMessage(), e); + throw new ParseException("Failed to parse Weibo hot page", e); + } + } +} diff --git a/project/java1/java-cli/src/main/java/com/example/datacollect/view/ConsoleView.java b/project/java1/java-cli/src/main/java/com/example/datacollect/view/ConsoleView.java new file mode 100644 index 0000000..afdc912 --- /dev/null +++ b/project/java1/java-cli/src/main/java/com/example/datacollect/view/ConsoleView.java @@ -0,0 +1,52 @@ +package com.example.datacollect.view; + +import com.example.datacollect.model.Article; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.Scanner; + +public class ConsoleView { + private static final Logger logger = LoggerFactory.getLogger(ConsoleView.class); + + private static final String ANSI_RESET = "\u001B[0m"; + private static final String ANSI_GREEN = "\u001B[32m"; + private static final String ANSI_RED = "\u001B[31m"; + private static final String ANSI_BLUE = "\u001B[34m"; + + private final Scanner scanner = new Scanner(System.in); + + public String readLine() { + logger.debug("Reading input from console"); + System.out.print("> "); + return scanner.nextLine(); + } + + public void printSuccess(String msg) { + logger.info("Success: {}", msg); + System.out.println(ANSI_GREEN + msg + ANSI_RESET); + } + + public void printError(String msg) { + logger.error("Error: {}", msg); + System.out.println(ANSI_RED + msg + ANSI_RESET); + } + + public void printInfo(String msg) { + logger.debug("Info: {}", msg); + System.out.println(ANSI_BLUE + msg + ANSI_RESET); + } + + public void display(List
articles) { + logger.debug("Displaying {} articles", articles.size()); + if (articles.isEmpty()) { + printInfo("暂无文章,请先执行 crawl。"); + return; + } + for (int i = 0; i < articles.size(); i++) { + Article a = articles.get(i); + System.out.println((i + 1) + ". " + a.getTitle() + " | " + a.getUrl()); + } + } +} diff --git a/project/java1/java-cli/src/main/resources/logback.xml b/project/java1/java-cli/src/main/resources/logback.xml new file mode 100644 index 0000000..e31e311 --- /dev/null +++ b/project/java1/java-cli/src/main/resources/logback.xml @@ -0,0 +1,27 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + ${LOG_PATH}/crawler.log + + ${LOG_PATH}/crawler.%d{yyyy-MM-dd}.log + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + diff --git a/project/java1/java-cli/target/classes/logback.xml b/project/java1/java-cli/target/classes/logback.xml new file mode 100644 index 0000000..e31e311 --- /dev/null +++ b/project/java1/java-cli/target/classes/logback.xml @@ -0,0 +1,27 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + ${LOG_PATH}/crawler.log + + ${LOG_PATH}/crawler.%d{yyyy-MM-dd}.log + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + diff --git a/project/java1/java-cli/target/maven-archiver/pom.properties b/project/java1/java-cli/target/maven-archiver/pom.properties new file mode 100644 index 0000000..5c1de34 --- /dev/null +++ b/project/java1/java-cli/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=datacollect-cli +groupId=com.example +version=0.1.0 diff --git a/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..fc8da7a --- /dev/null +++ b/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,22 @@ +com\example\datacollect\command\ListCommand.class +com\example\datacollect\strategy\WeiboHotStrategy.class +com\example\datacollect\command\CrawlCommand.class +com\example\datacollect\strategy\BlogStrategy.class +com\example\datacollect\repository\ArticleRepository.class +com\example\datacollect\Main.class +com\example\datacollect\view\ConsoleView.class +com\example\datacollect\command\ExitCommand.class +com\example\datacollect\command\HelpCommand.class +com\example\datacollect\strategy\CctvNewsStrategy.class +com\example\datacollect\Main$MockStrategy.class +com\example\datacollect\strategy\NewsStrategy.class +com\example\datacollect\strategy\WeatherStrategy.class +com\example\datacollect\command\Command.class +com\example\datacollect\controller\CrawlerController.class +com\example\datacollect\exception\CrawlerException.class +com\example\datacollect\exception\NetworkException.class +com\example\datacollect\strategy\StrategyFactory.class +com\example\datacollect\strategy\HnuNewsStrategy.class +com\example\datacollect\exception\ParseException.class +com\example\datacollect\strategy\CrawlStrategy.class +com\example\datacollect\model\Article.class diff --git a/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..80d64fe --- /dev/null +++ b/project/java1/java-cli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,21 @@ +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\command\ListCommand.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\exception\CrawlerException.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\NewsStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\command\CrawlCommand.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\controller\CrawlerController.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\BlogStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\WeatherStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\CctvNewsStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\view\ConsoleView.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\command\HelpCommand.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\exception\NetworkException.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\repository\ArticleRepository.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\Main.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\CrawlStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\command\Command.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\command\ExitCommand.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\StrategyFactory.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\model\Article.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\exception\ParseException.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\HnuNewsStrategy.java +C:\Users\14003\Desktop\java1\java-cli\src\main\java\com\example\datacollect\strategy\WeiboHotStrategy.java diff --git a/project/java1/java-cli/第10周——设计模式:灵活性与可扩展性.md b/project/java1/java-cli/第10周——设计模式:灵活性与可扩展性.md new file mode 100644 index 0000000..9641102 --- /dev/null +++ b/project/java1/java-cli/第10周——设计模式:灵活性与可扩展性.md @@ -0,0 +1,705 @@ +# 教案:《高级程序设计》第10周——设计模式:灵活性与可扩展性 + +| 项目 | 内容 | +| -------- | ---------------------------------------------------------------------------- | +| **课程名称** | 高级程序设计 | +| **周次** | 第10周 | +| **主题** | 设计模式——灵活性与可扩展性 | +| **学时** | 2学时(90分钟) | +| **授课对象** | 已完成第9周CLI+MVC架构学习,具备Command模式基础 | +| **教学环境** | JDK 17+、IntelliJ IDEA、Maven | +| **前情提要** | W9搭建了CLI骨架:MVC分层 + Command路由,但留下了两大隐患——解析逻辑耦合在Command中、List\共享引用裸奔 | + +--- + +## 教学调整说明:为什么W10要在“骨架”上装“盔甲”? + +> **W9成果**:一个可扩展的命令行骨架 → **W9痛点**:解析器与数据存储仍在“裸奔” + +| 维度 | W9状态 | W10目标 | +|------|--------|---------| +| **架构** | MVC分层清晰 | MVC + 策略模式 + 仓库层 | +| **命令扩展** | 新增命令不改Controller | 新增解析器不改任何旧代码 | +| **数据安全** | List\全员可写 | Repository封装,只暴露安全接口 | +| **解析逻辑** | 硬编码在CrawlCommand内 | 策略模式,按URL自动匹配 | +| **代码量** | ~8个类 | ~12个类,但每个更小更纯粹 | + +**决策理由**: +1. W9学生已经感受到Command模式的好处——**多态带来的扩展性** +2. 策略模式是多态思想的又一次实战,是**接口抽象的深化** +3. 仓库层是“封装”这一OOP核心原则的落地,补上W9留下的课 +4. 解析器工厂让学生看到**“自动匹配”**的威力——增加网站支持只需新增一个类 + +**更深层的教育价值**: +> W9教会学生“怎么把代码分开”,W10要教会学生“怎么把代码分开后还能优雅地合上”——**接口即合同,工厂即自动匹配,仓库即数据守卫**。这三句话,就是本周的全部精华。 + +--- + +## 一、教学目标 + +| 目标维度 | 具体描述 | +|----------|----------| +| **知识掌握** | 理解策略模式的定义与多态本质;掌握工厂模式的两类变体(工厂方法/简单工厂)及适用场景;理解仓库模式对数据访问的封装原理。 | +| **工程实践** | 能在爬虫项目中用策略模式封装不同网站的解析逻辑;能实现解析器工厂,根据URL自动匹配解析策略;能用Repository模式替代裸List,提供安全的数据访问接口。 | +| **思维转型** | 从“写死逻辑”转向“策略可插拔”;从“直接操作集合”转向“通过仓库存取”;理解“对扩展开放,对修改关闭”的开闭原则。 | +| **工具应用** | 利用AI审查策略模式实现是否真正解耦;让AI扮演“网站结构分析师”辅助编写具体解析策略;用AI生成Repository的安全接口建议。 | + +--- + +## 二、教学重点与难点 + +| 项目 | 内容 | 突破方法 | +|------|------|----------| +| **重点** | 策略模式的多态本质、解析器工厂的自动匹配机制、Repository对数据访问的封装 | 以“新增网站需要改什么”为切入点,展示策略模式的开闭原则达成;通过“攻击”当前List裸奔的问题,引出Repository的必然性 | +| **难点** | 理解“接口即合同”的抽象思维、工厂模式中反射/Map注册的实现、仓库层与Strategy模式的协同 | 用“插座与电器”类比接口标准;现场演示从硬编码→工厂→反射的演进路径;用时序图展示“用户→Command→Strategy→Repository”的完整调用链 | + +--- + +## 三、教学过程设计(90分钟) + +| 环节 | 时间 | 教学内容 | 师生活动 | AI协同点 | +| -------------------------- | --- | ----------------------------------------------------------------- | -------------------------------------- | --------------------------- | +| **1. W9回顾与痛点暴露** | 8' | 回顾W9成果(CLI骨架),暴露两大隐患:①CrawlCommand里解析逻辑硬编码;②List\全员可读可写 | **教师演示**:展示W9代码,用“事故场景”引发思考 | — | +| **2. 策略模式:解析器的“插头标准化”** | 18' | 策略模式定义、接口设计、多态调用、与Command模式的对比 | **类比**:插座与电器;**教师演示**:从if-else到策略模式的演进 | 让AI生成“策略模式vs switch-case”对比 | +| **3. 解析器工厂:自动匹配的魔法** | 14' | 工厂模式的两种形态(简单工厂→Map注册工厂),解析器工厂实现 | **教师演示**:先用if-else判断host,再升级为Map注册工厂 | 让AI解释工厂模式与策略模式如何协同 | +| **4. Repository模式:武装数据访问** | 12' | Repository定义、接口设计、替换List\后的影响 | **教师演示**:在原代码中把List替换为Repository,展示改动点 | 学生用AI审计Repository接口的“最小完备性” | +| **5. 整体架构串联** | 8' | 用一张时序图串联:用户→CLI→Controller→Command→Strategy→Repository→Model | **师生互动**:让学生在白板上画出调用链 | — | +| **6. 代码落地** | 20' | 实现CrawlStrategy接口 + 两个策略 + 解析器工厂 + ArticleRepository | **教师演示**:分步写出代码,刻意埋入“策略匹配失败”的异常处理 | 完成后用AI检查策略模式实现 | +| **7. 架构反思与W11预告** | 5' | 当前架构还有什么隐患?(异常处理不统一、日志缺失)→ 预告W11健壮性工程 | **师生互动**:如果解析器工厂找不到匹配策略,会发生什么? | — | +| **8. 实践任务** | 5' | 实现策略模式和仓库层,完成本周代码升级 | 学生现场编码,教师巡视 | — | + +--- + +## 四、核心教学内容脚本 + +### 4.1 W9回顾与痛点暴露(8分钟) + +**教师口播**: +> "上节课我们搭了一个很漂亮的骨架——CLI+MVC+Command模式。我们先来表扬一下自己:新增一个命令,只要新建一个类,Controller零改动。但请大家想一个问题——" + +**投影展示W9的CrawlCommand存根**: +```java +public class CrawlCommand implements Command { + // ... + public void execute(String[] args, List
articles) { + if (args.length < 2) { + view.printError("Usage: crawl "); + return; + } + view.printInfo("Stub: Would crawl " + args[1]); + } +} +``` + +**提问引导**: +1. "这个存根下周要填坑了。假设我们现在要真正实现爬取,代码写在哪?" +2. "如果我要支持两个网站——比如一个技术博客和一个新闻网站——它们的HTML结构完全不一样,这个`execute`方法会变成什么样?" + +**展示“噩梦版”CrawlCommand**: +```java +public void execute(String[] args, List
articles) { + String url = args[1]; + // 五十行if-else地狱... + if (url.contains("blog.example.com")) { + // 解析技术博客的HTML + Document doc = Jsoup.connect(url).get(); + Elements titles = doc.select(".post-title"); + for (Element e : titles) { + articles.add(new Article(e.text(), url, "")); + } + } else if (url.contains("news.example.com")) { + // 解析新闻网站的HTML + Document doc = Jsoup.connect(url).get(); + Elements items = doc.select(".article-headline"); + for (Element e : items) { + articles.add(new Article(e.text(), url, "")); + } + } else { + view.printError("Unsupported website!"); + } +} +``` + +**痛点提炼**: +> "看到了吗?每支持一个新网站,就要在这里加一个`else if`。这就是W1我们痛批的'牵一发而动全身',只不过这次灾难地点从`main`搬到了`CrawlCommand`。" +> +> "更重要的是,我们上节课辛辛苦苦实现了Command模式,难道解析逻辑又要回到if-else地狱吗?**这就是W10要解决的第一个问题:怎么让解析逻辑也可插拔?**" + +**第二个隐患——共享状态的回顾**: +> "还有一件事,我们上节课结束前提到的:`List
articles`在所有Command之间共享。任何一个Command都可以往里面塞东西、删东西、甚至清空。这是W10要解决的第二个问题:**怎么给数据装上'防盗门'?**" + +--- + +### 4.2 策略模式:解析器的“插头标准化”(18分钟) + +#### 4.2.1 从类比切入 + +**教师口播**: +> "先讲个生活场景。你家里墙上有一个三孔插座,你可以插电视、插电脑、插手机充电器——任何符合这个标准的电器都能用。插座不在乎你是什么电器,它只认接口标准。" + +**类比映射**: + +| 生活场景 | 代码对应 | +|----------|----------| +| 三孔插座 | `CrawlStrategy` 接口 | +| 电视/电脑充电器 | 具体解析策略(BlogStrategy/NewsStrategy) | +| 电流 | 输入:URL + Document;输出:List\ | +| 你(使用者) | CrawlCommand | +| 插座面板 | 解析器工厂 | + +> "策略模式的核心思想就是:**定义一个算法接口,让具体的算法实现可以互相替换,而使用算法的客户端不受影响。**" + +#### 4.2.2 策略模式定义 + +```java +// src/main/java/com/crawler/strategy/CrawlStrategy.java +package com.crawler.strategy; + +import com.crawler.model.Article; +import org.jsoup.nodes.Document; +import java.util.List; + +public interface CrawlStrategy { + /** + * 从已获取的Document中解析文章列表 + * @param url 原始请求URL(用于填充Article) + * @param doc Jsoup解析后的Document + * @return 解析出的文章列表 + */ + List
parse(String url, Document doc); + + /** + * 判断此策略是否为给定URL服务 + * @param url 待判断的URL + * @return true表示此策略可以处理该URL + */ + boolean supports(String url); +} +``` + +**教师口播**: +> "注意,策略接口里有两个方法。`parse`是干活的那个,`supports`是'我能不能干这个活'——这是什么?**这是合同!** 任何网站想被我们爬虫支持,就必须签署这份合同:告诉我你是不是我的客户(supports),以及怎么解析你(parse)。" + +#### 4.2.3 具体策略实现示例 + +```java +// BlogStrategy.java - 技术博客解析策略 +public class BlogStrategy implements CrawlStrategy { + @Override + public boolean supports(String url) { + return url.contains("blog.example.com"); + } + + @Override + public List
parse(String url, Document doc) { + List
articles = new ArrayList<>(); + Elements titles = doc.select(".post-title"); + for (Element e : titles) { + articles.add(new Article(e.text(), url, "")); + } + return articles; + } +} + +// NewsStrategy.java - 新闻网站解析策略 +public class NewsStrategy implements CrawlStrategy { + @Override + public boolean supports(String url) { + return url.contains("news.example.com"); + } + + @Override + public List
parse(String url, Document doc) { + List
articles = new ArrayList<>(); + Elements items = doc.select(".article-headline"); + for (Element e : items) { + articles.add(new Article(e.text(), url, "")); + } + return articles; + } +} +``` + +**对比:策略模式 vs 硬编码if-else** + +| 维度 | if-else屎山 | 策略模式 | +|------|-------------|----------| +| 新增网站 | 改CrawlCommand,加else if | 新写一个类,实现CrawlStrategy | +| 修改解析逻辑 | 在CrawlCommand里翻找对应的else if | 只改对应策略类 | +| 测试 | 必须启动整个爬虫 | 单独对Strategy做单元测试 | +| 是否符合开闭原则 | ❌ 对修改开放 | ✅ 对扩展开放,对修改关闭 | + +**与Command模式的对比(加深理解)**: +> "上节课Command模式,我们为每个命令定义一个类;这节课策略模式,我们为每个网站的解析算法定义一个类。**本质上都是同一个OOP思想:用多态替代条件分支。** 只不过Command的接口是`execute()`,Strategy的接口是`parse()`。" +> +> "这张图你们可以记下来:**接口是消除if-else的利器,多态是接口的灵魂。**" + +--- + +### 4.3 解析器工厂:自动匹配的魔法(14分钟) + +#### 4.3.1 问题引出 + +**教师口播**: +> "现在我们有A网站的策略、B网站的策略。问题来了:谁来选策略?谁来遍历所有策略,找到一个supports返回true的?" +> +> "如果把这个逻辑写在CrawlCommand里,那策略模式就白用了——CrawlCommand还是得'知道'有哪些策略。我们要的是一个黑盒子:**把URL丢进去,自动弹出一个合适的解析器。**" + +#### 4.3.2 解析器工厂的实现 + +```java +// src/main/java/com/crawler/strategy/StrategyFactory.java +package com.crawler.strategy; + +import java.util.ArrayList; +import java.util.List; + +public class StrategyFactory { + private final List strategies = new ArrayList<>(); + + // 注册策略——新的网站只需在这里加一行 + public StrategyFactory() { + strategies.add(new BlogStrategy()); + strategies.add(new NewsStrategy()); + // 未来增加新网站:strategies.add(new XxxStrategy()); + } + + /** + * 根据URL自动匹配解析策略 + * @param url 目标URL + * @return 匹配的策略,如果没有匹配返回null + */ + public CrawlStrategy getStrategy(String url) { + for (CrawlStrategy s : strategies) { + if (s.supports(url)) { + return s; + } + } + return null; // 未找到匹配策略 + } +} +``` + +**教师口播**: +> "这个工厂类足够简单:一个List存所有策略,一个方法遍历找到匹配的。但简单不等于不强大。** +> +> **关键点**:新增网站支持,只需要——" +1. 写一个`XxxStrategy`实现`CrawlStrategy` +2. 在工厂构造器里加一行`strategies.add(new XxxStrategy())` +> +> "CrawlCommand一行不改。这就是开闭原则的胜利。" + +#### 4.3.3 从简单工厂到更高级的注册机制(拓展思维) + +**教师口播**: +> "有同学可能会问:还要在工厂构造器里加一行,能不能做到完全零改动?当然可以——用反射或者SPI。" + +**演示概念(不要求实现)**: +```java +// 进阶思路:扫描指定包下的所有CrawlStrategy实现类 +// 用反射自动注册,真正做到“新增类即生效” +// 这是Spring框架的核心思想之一 +``` + +> "这个技术我们暂时不要求掌握,但我希望你们知道:你现在写的每一个`new XxxStrategy()`,在未来都可能进化为框架级别的自动装配。**你现在建立的思维习惯,决定了你未来能走多高。**" + +#### 4.3.4 重构后的CrawlCommand + +```java +public class CrawlCommand implements Command { + private ConsoleView view; + private StrategyFactory strategyFactory; + private ArticleRepository repository; // 注意:这里是Repository了! + + public CrawlCommand(ConsoleView v, StrategyFactory f, ArticleRepository r) { + this.view = v; + this.strategyFactory = f; + this.repository = r; + } + + public String getName() { return "crawl"; } + + public void execute(String[] args, List
articles) { + if (args.length < 2) { + view.printError("Usage: crawl "); + return; + } + String url = args[1]; + + // 1. 工厂自动选策略 + CrawlStrategy strategy = strategyFactory.getStrategy(url); + if (strategy == null) { + view.printError("No strategy found for: " + url); + return; + } + + // 2. 抓取页面 + view.printInfo("Crawling: " + url); + try { + Document doc = Jsoup.connect(url).get(); + List
parsed = strategy.parse(url, doc); + + // 3. 通过仓库存入(而不是直接操作List) + for (Article a : parsed) { + repository.add(a); + } + view.printSuccess("Crawled " + parsed.size() + " articles."); + } catch (IOException e) { + view.printError("Failed to crawl: " + e.getMessage()); + } + } +} +``` + +**教师口播**: +> "注意这个CrawlCommand现在的职责:拿到URL → 交给工厂选策略 → 执行解析 → 交给仓库存储。**它自己在干什么?在调度!** 这就是上节课我们讲的Controller的'调度思维',现在向Command内部延伸了。" + +--- + +### 4.4 Repository模式:武装数据访问(12分钟) + +#### 4.4.1 问题重提 + +**教师口播**: +> "回到上节课结束时的那个问题:`List
`在所有Command之间共享。任何一个Command都可以做这些事——" +```java +articles.clear(); // 清空所有文章 +articles.add(null); // 塞入null +articles.remove(0); // 随意删除 +``` + +> "如果一个新同事接手开发,他不知道'不要动这个List'的潜规则,写了一个`articles.clear()`,你的`list`命令就突然什么都不显示了。**靠代码约定维护的秩序,早晚会被打破。我们需要实体的'规则'——代码层面的约束。**" + +#### 4.4.2 ArticleRepository的定义 + +```java +// src/main/java/com/crawler/repository/ArticleRepository.java +package com.crawler.repository; + +import com.crawler.model.Article; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class ArticleRepository { + private final List
articles = new ArrayList<>(); + + /** + * 添加一篇文章。注意:不接受null,这是代码层面的规则,不是口头约定。 + */ + public void add(Article article) { + if (article == null) { + throw new IllegalArgumentException("Article cannot be null"); + } + articles.add(article); + } + + /** + * 获取所有文章的只读视图 + * 调用者无法通过此返回值修改内部数据 + */ + public List
getAll() { + return Collections.unmodifiableList(articles); + } + + /** + * 获取文章数量 + */ + public int size() { + return articles.size(); + } + + /** + * 清空(仅管理员可调——下一篇:权限控制) + */ + public void clear() { + articles.clear(); + } +} +``` + +**教师口播**: +> "三个关键设计点——" +> +> - **add()拒绝null**:规则写在代码里,不是写在邮件里 +> - **getAll()返回不可修改的视图**:`Collections.unmodifiableList()`——调用者如果尝试add/remove,会**直接抛异常**,不是'悄悄的bug' +> - **ClearCommand要清空数据?调`repository.clear()`**,而不是直接操作List +> +> "这就是面向对象的第一课——封装。把数据藏起来,只暴露安全的方法。从'直接操作集合'到'通过仓库存取',是程序员成熟度的分水岭。" + +#### 4.4.3 仓库引入后的架构变化 + +**Command接口的execute方法调整**: + +```java +// 调整前(W9) +public interface Command { + String getName(); + void execute(String[] args, List
articles); +} + +// 调整后(W10) +public interface Command { + String getName(); + void execute(String[] args, ArticleRepository repository); +} +``` + +**教师口播**: +> "这个改动很小——把`List
`换成`ArticleRepository`。但语义完全不同:之前是'给你数据随便玩',现在是'给你一个安全的存取通道'。" + +**所有Command同步调整**: + +```java +// ListCommand.java - 调整后 +public class ListCommand implements Command { + private ConsoleView view; + public ListCommand(ConsoleView v) { this.view = v; } + public String getName() { return "list"; } + public void execute(String[] args, ArticleRepository repository) { + view.display(repository.getAll()); // 通过仓库获取数据 + } +} + +// ClearCommand.java(新增示例) +public class ClearCommand implements Command { + private ConsoleView view; + public ClearCommand(ConsoleView v) { this.view = v; } + public String getName() { return "clear"; } + public void execute(String[] args, ArticleRepository repository) { + repository.clear(); + view.printSuccess("All articles cleared."); + } +} +``` + +**Controller和main的调整**: + +```java +// App.java - 调整后 +public class App { + public static void main(String[] args) { + ConsoleView view = new ConsoleView(); + ArticleRepository repository = new ArticleRepository(); // 替代 List
+ StrategyFactory factory = new StrategyFactory(); // 新增 + + CrawlerController controller = new CrawlerController(view, repository, factory); + + view.printSuccess("Welcome to CLI Crawler v2.0!"); + view.printInfo("Type 'help' for commands."); + + while (true) { + controller.handle(view.readLine()); + } + } +} +``` + +--- + +### 4.5 整体架构串联(8分钟) + +**教师口播**: +> "现在我们把所有部件串起来,看看一个`crawl https://blog.example.com`命令走过的完整路径。" + +**时序图(口述配白板绘制)**: +``` +用户输入 "crawl https://blog.example.com" + │ + ▼ +ConsoleView.readLine() + │ + ▼ +CrawlerController.handle("crawl https://blog.example.com") + │ Map查找 "crawl" → CrawlCommand + ▼ +CrawlCommand.execute(args, repository) + │ + ├─► StrategyFactory.getStrategy(url) + │ │ 遍历List + │ │ BlogStrategy.supports(url) → true! + │ ▼ + │ 返回 BlogStrategy + │ + ├─► Jsoup.connect(url).get() → Document + │ + ├─► BlogStrategy.parse(url, doc) → List
+ │ + └─► for each article: repository.add(article) + │ + ▼ + ArticleRepository.articles.add(article) + +最终:ConsoleView.printSuccess("Crawled N articles.") +``` + +**教师口播**: +> "七步调用,每一步职责清晰:View负责输入输出,Controller负责路由,Command负责调度,Factory负责匹配,Strategy负责解析,Repository负责存储。**没有哪个类干了两个人的活,也没有哪个类不知道自己的活是什么。**" +> +> "这就是工程化——不是把代码写得快,是把代码写得对。" + +--- + +### 4.6 代码落地(20分钟) + +**教师准备**:课前准备一份“W9升级到W10”的改动清单,现场演示关键改动。 + +**改动清单**: +1. 新建`strategy/`包,创建`CrawlStrategy`接口 +2. 新建`strategy/BlogStrategy.java` +3. 新建`strategy/NewsStrategy.java` +4. 新建`strategy/StrategyFactory.java` +5. 新建`repository/`包,创建`ArticleRepository.java` +6. 修改`Command`接口的`execute`签名 +7. 修改`CrawlCommand`,引入`StrategyFactory`和`ArticleRepository` +8. 修改其余所有`Command`实现类 +9. 修改`CrawlerController`构造器 +10. 修改`App.java` + +**教师演示关键步骤**(重点演示): +- `ArticleRepository`的`Collections.unmodifiableList()` +- `StrategyFactory`的遍历匹配逻辑 +- `CrawlCommand`重写后的调度结构 + +**刻意埋入的“找茬点”**: +> "我在`StrategyFactory.getStrategy()`里,如果没有匹配的策略就返回`null`。然后在`CrawlCommand`里检查null。这其实叫'null object pattern的前奏'——如果我不想让Command检查null,我应该怎么改工厂?大家带着这个问题用AI探究。" + +--- + +### 4.7 架构反思与W11预告(5分钟) + +**教师口播**: +> "现在我们的架构比W9强壮多了:解析逻辑可插拔,数据访问有守卫。但还有一些漏洞——" + +**逐一点破**: +1. **异常处理**:`CrawlCommand`用了一个笼统的`catch (IOException e)`,如果解析过程中抛出其他异常怎么办? +2. **网络超时**:如果目标网站3秒没响应,当前代码会一直等吗? +3. **日志缺失**:所有的成功/失败信息只输出到终端,如果程序半夜跑,第二天想看昨晚抓了多少——看不了。 +4. **重试机制**:如果一次失败就直接报错,要不要给个重试的机会? + +**W11预告**: +> "下周,我们会做三件事:**自定义异常体系**、**工程化日志框架**、**防御式编程与重试机制**。W9搭骨架,W10装盔甲,W11要让这个系统**经得起现实的毒打**。" + +--- + +### 4.8 实践任务(5分钟) + +**任务要求**: +1. 从W9代码出发,完成W10升级 +2. 实现至少两个`CrawlStrategy`(可以是模拟的,不要求真实爬取) +3. 实现`StrategyFactory`和`ArticleRepository` +4. 确保所有Command通过Repository访问数据 +5. 运行并测试完整流程 + +**验收标准**: +- [x] 新增策略类只需新建文件+工厂注册一行,其余代码零改动 +- [x] `ArticleRepository`的`getAll()`返回不可修改视图 +- [x] `CrawlCommand`不包含任何网站特定的解析逻辑 +- [x] `StrategyFactory`能根据URL自动匹配正确的策略 +- [x] 所有Command的`execute`方法签名已更新为`ArticleRepository` +- [x] 无任何地方直接操作`List
` + +--- + +## 五、课后作业 + +### 5.1 必做任务 + +1. **完善ArticleRepository**:增加`addAll(List
)`批量添加方法,注意防御null +2. **★ AnalyzeCommand(集大成作业)**: + - 实现`analyze `命令 + - 内部调用`StrategyFactory`匹配策略 + - 调用策略解析文章后,**不存到Repository**,而是分析统计信息: + - 文章总数 + - 标题平均长度 + - 按某种规则排名的Top 5 + - 结果只输出,不存储 + - **提示**:这就是策略的复用——同一个解析策略,既能为`crawl`服务(存入仓库),也能为`analyze`服务(仅分析) + +3. **AI架构审计**:将完整代码的类图(或类名与方法签名列表)发给AI,指令: + > "作为Java架构审计师,请检查:①策略模式的实现是否正确解耦(CrawlCommand是否仍然包含网站特定逻辑);②Repository是否真正封装了数据访问(是否存在绕过Repository直接操作List的地方);③工厂的匹配逻辑是否存在性能隐患。请给出具体的改进建议。" + +### 5.2 选做任务 + +1. **正则策略匹配**:将`Supports()`的判断从`url.contains()`改为正则表达式,让一张策略可以匹配一类URL +2. **默认策略(DefaultStrategy)**:当没有策略匹配时,提供一个通用的“标题提取”逻辑 +3. **策略优先级**:给每个策略加一个`priority`字段,工厂按优先级匹配(而不是按注册顺序) +4. **思考并回答(200字)**: + > "策略模式中,策略的`supports()`方法有可能让两个策略都返回true,这时该选哪个?`StrategyFactory`的遍历顺序会如何影响结果?你有什么解决方案?" + +### 5.3 思考题 + +1. **Repository与List的区别是什么?** 如果Repository只是包了一层List,为什么还要用? +2. **策略工厂的演进**:如果网站数量增加到100个,逐个注册的写法还合适吗?你想到什么解决方案? +3. **`Collections.unmodifiableList()`返回的是什么?** 它真的“不可修改”吗?如果原List被修改,这个不可修改视图会怎样? + +--- + +## 六、AI协同升级 + +### 架构审计师任务(必做) + +**学生执行步骤**: +1. 画出当前项目的类依赖图(手绘或工具生成) +2. 将类名和依赖关系发给AI +3. 输入指令: + > "作为Java架构审计师,请检查这个爬虫项目的架构。重点关注:①策略模式是否真正实现了开闭原则(增加新网站是否真的只需新增类);②Repository封装是否完整(是否有绕过Repository的路径);③是否存在循环依赖。请逐一指出问题并给出改进建议。" + +**预期AI输出**: +- 指出是否还存在“改一处影响多处”的耦合 +- 判断Repository的API设计是否完备 +- 评价整体架构的开闭原则达成度 + +### 进阶AI探究(选做) + +> "假设我有一个CrawlStrategy接口和10个实现类。不用工厂模式,直接用一个Map存起来,key是策略名称。这和StrategyFactory设计有什么本质区别?各自的优缺点是什么?" + +--- + +## 七、教学反思与调整记录 + +| 日期 | 事项 | 调整内容 | +|------|------|----------| +| 2026-05-01 | 首次编写 | 基于W9骨架,引入策略模式+工厂+Repository | +| 2026-05-07 | 结构优化 | 调整策略模式与工厂的讲解顺序,先策略后工厂更自然 | + +--- + +## 附录1:W9到W10改动对照表 + +| 改动项 | W9代码 | W10代码 | +|--------|--------|---------| +| 数据存储 | `List
articles` | `ArticleRepository repository` | +| Command接口 | `execute(String[], List
)` | `execute(String[], ArticleRepository)` | +| 解析逻辑位置 | `CrawlCommand`内部 | 各`CrawlStrategy`实现类 | +| URL匹配 | 无(硬编码) | `StrategyFactory.getStrategy(url)` | +| 数据添加 | `articles.add(article)` | `repository.add(article)` | +| 数据读取 | 直接遍历`articles` | `repository.getAll()` | + +## 附录2:常见问题速查 + +| 问题 | 解答 | +|------|------| +| 策略模式和Command模式有什么区别? | Command封装“动作”(做什么事),Strategy封装“算法”(怎么做)。在爬虫中:crawl是命令(动作),如何解析是策略(算法)。 | +| 工厂一定要叫Factory吗? | 不必须。但叫Factory意味着“创建对象”的职责,符合模式命名的惯例。 | +| `Collections.unmodifiableList()`有什么用? | 返回一个只读视图,调用add/remove等方法会抛`UnsupportedOperationException`。 | +| Repository和DAO有什么区别? | 在我们的上下文中可以视为同义词。严谨地说,Repository是领域驱动设计的概念,更偏向“集合语义”;DAO更偏数据库操作。 | +| 策略的`supports()`返回true但解析失败怎么办? | 那是策略实现的bug,该策略应修复。Factory不负责验证策略的正确性。 | + +## 附录3:教学逻辑说明 + +| 顺序 | 内容 | 设计理由 | +|------|------|----------| +| 1 | W9回顾+痛点暴露 | 承上启下,从已知问题引出新知识 | +| 2 | 策略模式 | 解决解析逻辑耦合问题,深化多态理解 | +| 3 | 解析器工厂 | 解决策略选择问题,引入工厂模式 | +| 4 | Repository模式 | 解决数据安全问题,实践封装原则 | +| 5 | 架构串联 | 将所有部件统一,形成完整心智模型 | +| 6 | 代码落地 | 实践验证,从“听懂”到“会做” | +| 7 | 架构反思+预告 | 暴露新问题,为W11健壮性工程铺垫 | + +--- + +## 版本说明 + +- **v1(本版)**:基于W9教案模式首次编写,包含策略模式、工厂模式、Repository模式的完整引入 \ No newline at end of file diff --git a/project/java1/logs/crawler.2026-05-19.log b/project/java1/logs/crawler.2026-05-19.log new file mode 100644 index 0000000..8fd98d5 --- /dev/null +++ b/project/java1/logs/crawler.2026-05-19.log @@ -0,0 +1,358 @@ +2026-05-19 10:48:15.013 [main] INFO com.example.datacollect.Main - Starting CLI Crawler application +2026-05-19 10:48:15.022 [main] INFO c.e.d.strategy.StrategyFactory - StrategyFactory initialized with 3 strategies +2026-05-19 10:48:15.025 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: help +2026-05-19 10:48:15.027 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: list +2026-05-19 10:48:15.027 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: crawl +2026-05-19 10:48:15.028 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: exit +2026-05-19 10:48:15.029 [main] INFO c.e.d.controller.CrawlerController - CrawlerController initialized with 4 commands +2026-05-19 10:48:15.031 [main] INFO c.e.datacollect.view.ConsoleView - Success: Welcome to CLI Crawler (w10_3)! Type help for commands. +2026-05-19 10:48:15.032 [main] INFO com.example.datacollect.Main - Application ready, waiting for input +2026-05-19 10:48:15.033 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 10:49:49.548 [main] WARN c.e.d.controller.CrawlerController - Unknown command: crawl +2026-05-19 10:49:49.548 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Unknown command: crawl +2026-05-19 10:49:49.559 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:04:21.863 [main] INFO com.example.datacollect.Main - Starting CLI Crawler application +2026-05-19 11:04:21.878 [main] INFO c.e.d.strategy.StrategyFactory - StrategyFactory initialized with 6 strategies +2026-05-19 11:04:21.883 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: help +2026-05-19 11:04:21.884 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: list +2026-05-19 11:04:21.885 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: crawl +2026-05-19 11:04:21.886 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: exit +2026-05-19 11:04:21.886 [main] INFO c.e.d.controller.CrawlerController - CrawlerController initialized with 4 commands +2026-05-19 11:04:21.886 [main] INFO c.e.datacollect.view.ConsoleView - Success: Welcome to CLI Crawler (w10_3)! Type help for commands. +2026-05-19 11:04:21.887 [main] INFO com.example.datacollect.Main - Application ready, waiting for input +2026-05-19 11:04:21.887 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:05:05.592 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:05:05.594 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: +2026-05-19 11:05:05.596 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL : false +2026-05-19 11:05:05.596 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL : false +2026-05-19 11:05:05.597 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL : false +2026-05-19 11:05:05.603 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL : true +2026-05-19 11:05:05.604 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy WeiboHotStrategy for URL: +2026-05-19 11:05:05.606 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: +2026-05-19 11:05:05.621 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: +2026-05-19 11:05:05.626 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: +2026-05-19 11:05:05.667 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 1 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:05:05.669 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:05:06.672 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 2 to fetch URL: +2026-05-19 11:05:06.675 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 2 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:05:06.677 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:05:07.689 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 3 to fetch URL: +2026-05-19 11:05:07.690 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 3 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:05:07.692 [main] ERROR c.e.datacollect.command.CrawlCommand - Failed to fetch URL after 3 attempts: +2026-05-19 11:05:07.692 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Failed to fetch URL after 3 attempts: +2026-05-19 11:05:07.694 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:06:22.788 [main] WARN c.e.d.controller.CrawlerController - Unknown command: ceawl +2026-05-19 11:06:22.788 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Unknown command: ceawl +2026-05-19 11:06:22.791 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:06:50.556 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:06:50.557 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: < +2026-05-19 11:06:50.557 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL <: false +2026-05-19 11:06:50.558 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL <: false +2026-05-19 11:06:50.558 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL <: false +2026-05-19 11:06:50.558 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL <: false +2026-05-19 11:06:50.562 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL <: false +2026-05-19 11:06:50.563 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL <: false +2026-05-19 11:06:50.567 [main] WARN c.e.d.strategy.StrategyFactory - No strategy found for URL: < +2026-05-19 11:06:50.574 [main] WARN c.e.datacollect.command.CrawlCommand - No strategy found for: < +2026-05-19 11:06:50.576 [main] ERROR c.e.datacollect.view.ConsoleView - Error: No strategy found for: < +2026-05-19 11:06:50.580 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:07:24.657 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:07:24.659 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: +2026-05-19 11:07:24.659 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL : false +2026-05-19 11:07:24.659 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL : false +2026-05-19 11:07:24.661 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL : false +2026-05-19 11:07:24.663 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL : false +2026-05-19 11:07:24.666 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL : true +2026-05-19 11:07:24.667 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy CctvNewsStrategy for URL: +2026-05-19 11:07:24.668 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: +2026-05-19 11:07:24.669 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: +2026-05-19 11:07:24.671 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: +2026-05-19 11:07:24.675 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 1 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:07:24.676 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:07:25.678 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 2 to fetch URL: +2026-05-19 11:07:25.681 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 2 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:07:25.682 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:07:26.696 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 3 to fetch URL: +2026-05-19 11:07:26.698 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 3 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:07:26.700 [main] ERROR c.e.datacollect.command.CrawlCommand - Failed to fetch URL after 3 attempts: +2026-05-19 11:07:26.701 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Failed to fetch URL after 3 attempts: +2026-05-19 11:07:26.702 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:14:42.973 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:14:42.975 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: +2026-05-19 11:14:42.975 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL : false +2026-05-19 11:14:42.988 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL : false +2026-05-19 11:14:43.005 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL : false +2026-05-19 11:14:43.011 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL : false +2026-05-19 11:14:43.015 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL : false +2026-05-19 11:14:43.016 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL : true +2026-05-19 11:14:43.017 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy WeatherStrategy for URL: +2026-05-19 11:14:43.019 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: +2026-05-19 11:14:43.030 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: +2026-05-19 11:14:43.038 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: +2026-05-19 11:14:43.039 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 1 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:14:43.048 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:14:44.062 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 2 to fetch URL: +2026-05-19 11:14:44.066 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 2 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:14:44.067 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-19 11:14:45.078 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 3 to fetch URL: +2026-05-19 11:14:45.079 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 3 failed for URL : The supplied URL, '', is malformed. Make sure it is an absolute URL, and starts with 'http://' or 'https://'. See https://jsoup.org/cookbook/extracting-data/working-with-urls +2026-05-19 11:14:45.082 [main] ERROR c.e.datacollect.command.CrawlCommand - Failed to fetch URL after 3 attempts: +2026-05-19 11:14:45.083 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Failed to fetch URL after 3 attempts: +2026-05-19 11:14:45.090 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:17:17.250 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:17:17.251 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://www.tianqi.com/changsha +2026-05-19 11:17:17.263 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:17:17.266 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:17:17.267 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:17:17.267 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:17:17.267 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:17:17.267 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL https://www.tianqi.com/changsha: true +2026-05-19 11:17:17.267 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy WeatherStrategy for URL: https://www.tianqi.com/changsha +2026-05-19 11:17:17.269 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://www.tianqi.com/changsha +2026-05-19 11:17:17.269 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://www.tianqi.com/changsha +2026-05-19 11:17:17.269 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://www.tianqi.com/changsha +2026-05-19 11:17:18.361 [main] DEBUG c.e.d.strategy.WeatherStrategy - Parsing weather page: https://www.tianqi.com/changsha +2026-05-19 11:17:18.388 [main] INFO c.e.d.strategy.WeatherStrategy - Parsed 1 weather items +2026-05-19 11:17:18.391 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 2026年05月19日 长沙天气 +2026-05-19 11:17:18.395 [main] INFO c.e.datacollect.command.CrawlCommand - Successfully crawled 1 articles from https://www.tianqi.com/changsha +2026-05-19 11:17:18.395 [main] INFO c.e.datacollect.view.ConsoleView - Success: Crawled 1 articles. +2026-05-19 11:17:18.395 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:17:25.633 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: list +2026-05-19 11:17:25.634 [main] DEBUG c.e.datacollect.command.ListCommand - Listing articles +2026-05-19 11:17:25.635 [main] DEBUG c.e.d.repository.ArticleRepository - Returning 1 articles (unmodifiable) +2026-05-19 11:17:25.636 [main] DEBUG c.e.datacollect.view.ConsoleView - Displaying 1 articles +2026-05-19 11:17:25.660 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:18:00.938 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:18:00.939 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://tv.cctv.com +2026-05-19 11:18:00.939 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://tv.cctv.com: false +2026-05-19 11:18:00.942 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://tv.cctv.com: false +2026-05-19 11:18:00.942 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://tv.cctv.com: false +2026-05-19 11:18:00.948 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://tv.cctv.com: false +2026-05-19 11:18:00.950 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://tv.cctv.com: true +2026-05-19 11:18:00.950 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy CctvNewsStrategy for URL: https://tv.cctv.com +2026-05-19 11:18:00.951 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://tv.cctv.com +2026-05-19 11:18:00.951 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://tv.cctv.com +2026-05-19 11:18:00.952 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://tv.cctv.com +2026-05-19 11:18:01.315 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - Parsing CCTV news page: https://tv.cctv.com +2026-05-19 11:18:01.318 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - Found 0 news items +2026-05-19 11:18:01.402 [main] INFO c.e.d.strategy.CctvNewsStrategy - Parsed 189 news from CCTV +2026-05-19 11:18:01.403 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直 播 +2026-05-19 11:18:01.403 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-19 11:18:01.404 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 频道大全 +2026-05-19 11:18:01.404 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 栏目大全 +2026-05-19 11:18:01.404 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主 持 人 +2026-05-19 11:18:01.405 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-19 11:18:01.406 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 消费主张 +2026-05-19 11:18:01.406 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 文化十分 +2026-05-19 11:18:01.407 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事科技 +2026-05-19 11:18:01.407 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日关注 +2026-05-19 11:18:01.407 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 天下足球 +2026-05-19 11:18:01.408 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综合 +2026-05-19 11:18:01.408 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻 +2026-05-19 11:18:01.409 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 财经 +2026-05-19 11:18:01.409 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综艺 +2026-05-19 11:18:01.409 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 亚洲 +2026-05-19 11:18:01.409 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育 +2026-05-19 11:18:01.411 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电影 +2026-05-19 11:18:01.411 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防军事 +2026-05-19 11:18:01.411 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-19 11:18:01.412 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录 +2026-05-19 11:18:01.412 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科教 +2026-05-19 11:18:01.412 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲 +2026-05-19 11:18:01.413 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 社会与法 +2026-05-19 11:18:01.413 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 少儿 +2026-05-19 11:18:01.413 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐 +2026-05-19 11:18:01.414 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 奥林匹克 +2026-05-19 11:18:01.420 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 农业农村 +2026-05-19 11:18:01.437 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 欧洲 +2026-05-19 11:18:01.437 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 美洲 +2026-05-19 11:18:01.439 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育赛事 +2026-05-19 11:18:01.439 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-19 11:18:01.440 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 搜片库 +2026-05-19 11:18:01.440 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 找栏目 +2026-05-19 11:18:01.440 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国经济大讲堂 +2026-05-19 11:18:01.441 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 健康中国 +2026-05-19 11:18:01.441 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-19 11:18:01.441 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科幻地带 +2026-05-19 11:18:01.441 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 如何解读中美关系新定位? +2026-05-19 11:18:01.442 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 垃圾围村 曝多地违法倾倒乱象 +2026-05-19 11:18:01.442 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 四川“大摆荡”坠亡事故调查 +2026-05-19 11:18:01.443 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 孤寡老人留百万遗产 由谁继承 +2026-05-19 11:18:01.443 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 带你破解肠道健康的隐秘真相 +2026-05-19 11:18:01.444 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 坐着高铁看中国 +2026-05-19 11:18:01.445 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: AI基建新潮涌 +2026-05-19 11:18:01.451 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一帘光影三代人 +2026-05-19 11:18:01.451 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 如何把阳光“存进”大海里 +2026-05-19 11:18:01.452 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 驾驭“蓝鲸” 潜航深海 +2026-05-19 11:18:01.452 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-19 11:18:01.454 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-19 11:18:01.454 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-19 11:18:01.456 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 唐都生活指南(第二部) +2026-05-19 11:18:01.456 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 金石探文明 +2026-05-19 11:18:01.457 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 赤壁之战 +2026-05-19 11:18:01.457 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 先秦智慧 +2026-05-19 11:18:01.458 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国史通鉴·两晋南北朝篇 +2026-05-19 11:18:01.458 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《叶问》郑嘉颖乱世之中寻求武学真谛 +2026-05-19 11:18:01.459 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《曾少年》张一山关晓彤爱情事业两不误 +2026-05-19 11:18:01.461 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《炊事班的故事Ⅱ》密集承包你的笑点 +2026-05-19 11:18:01.461 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《火蓝刀锋》海军陆战队亮刀锋展军魂 +2026-05-19 11:18:01.461 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《问天》致敬中国航天数十年的峥嵘岁月 +2026-05-19 11:18:01.461 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播 +2026-05-19 11:18:01.461 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-19 11:18:01.462 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 频道大全 +2026-05-19 11:18:01.462 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 栏目大全 +2026-05-19 11:18:01.462 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综合 +2026-05-19 11:18:01.463 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 财经 +2026-05-19 11:18:01.463 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综艺 +2026-05-19 11:18:01.463 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中文国际 +2026-05-19 11:18:01.463 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电影 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防军事 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科教 +2026-05-19 11:18:01.464 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲 +2026-05-19 11:18:01.466 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 社会与法 +2026-05-19 11:18:01.466 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻 +2026-05-19 11:18:01.466 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 少儿 +2026-05-19 11:18:01.467 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐 +2026-05-19 11:18:01.467 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育赛事 +2026-05-19 11:18:01.467 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 农业农村 +2026-05-19 11:18:01.467 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻联播 +2026-05-19 11:18:01.468 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 挑战不可能 +2026-05-19 11:18:01.468 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 开讲啦 +2026-05-19 11:18:01.470 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 人与自然 +2026-05-19 11:18:01.471 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 生活提示 +2026-05-19 11:18:01.471 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国诗词大会 +2026-05-19 11:18:01.472 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 对话 +2026-05-19 11:18:01.472 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 第一时间 +2026-05-19 11:18:01.473 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一槌定音 +2026-05-19 11:18:01.474 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 回家吃饭 +2026-05-19 11:18:01.474 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 生活家 +2026-05-19 11:18:01.475 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 金牌喜剧班 +2026-05-19 11:18:01.475 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 舞蹈世界 +2026-05-19 11:18:01.475 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 星光大道 +2026-05-19 11:18:01.476 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 向幸福出发 +2026-05-19 11:18:01.476 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 回声嘹亮 +2026-05-19 11:18:01.476 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 健康中国 +2026-05-19 11:18:01.477 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 深度国际 +2026-05-19 11:18:01.478 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国文艺 +2026-05-19 11:18:01.478 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国家记忆 +2026-05-19 11:18:01.478 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 华人故事 +2026-05-19 11:18:01.479 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 运动一起赢 +2026-05-19 11:18:01.479 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体坛快讯 +2026-05-19 11:18:01.479 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 足球之夜 +2026-05-19 11:18:01.479 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日影评 +2026-05-19 11:18:01.479 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 时光军史馆 +2026-05-19 11:18:01.481 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军迷行天下 +2026-05-19 11:18:01.482 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事报道 +2026-05-19 11:18:01.483 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事纪实 +2026-05-19 11:18:01.483 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事纪录 +2026-05-19 11:18:01.484 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防故事 +2026-05-19 11:18:01.484 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 剧说很好看 +2026-05-19 11:18:01.484 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 寰宇视野 +2026-05-19 11:18:01.485 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 特别呈现 +2026-05-19 11:18:01.485 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 9视频 +2026-05-19 11:18:01.485 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 百家讲坛 +2026-05-19 11:18:01.486 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 健康之路 +2026-05-19 11:18:01.486 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科幻地带 +2026-05-19 11:18:01.486 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 考古公开课 +2026-05-19 11:18:01.486 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 解码科技史 +2026-05-19 11:18:01.487 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲青年说 +2026-05-19 11:18:01.487 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国京剧音配像精粹 +2026-05-19 11:18:01.487 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 过把瘾 +2026-05-19 11:18:01.488 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 宝贝亮相吧 +2026-05-19 11:18:01.488 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 剧懂法 +2026-05-19 11:18:01.489 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一线 +2026-05-19 11:18:01.489 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 普法剧场 +2026-05-19 11:18:01.489 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 天网 +2026-05-19 11:18:01.489 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 心理访谈 +2026-05-19 11:18:01.490 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 律师来了 +2026-05-19 11:18:01.490 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 焦点访谈 +2026-05-19 11:18:01.490 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 每周质量报告 +2026-05-19 11:18:01.491 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 午夜新闻 +2026-05-19 11:18:01.491 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻调查 +2026-05-19 11:18:01.491 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻周刊 +2026-05-19 11:18:01.491 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 周末动画片 +2026-05-19 11:18:01.491 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐快递 +2026-05-19 11:18:01.493 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻袋袋裤 +2026-05-19 11:18:01.493 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 智慧树 +2026-05-19 11:18:01.494 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 快乐童行 +2026-05-19 11:18:01.494 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 乐享汇 +2026-05-19 11:18:01.494 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: CCTV音乐厅 +2026-05-19 11:18:01.494 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国音乐电视 +2026-05-19 11:18:01.494 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 聆听时刻 +2026-05-19 11:18:01.496 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 童声唱 +2026-05-19 11:18:01.496 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 冰球冰球 +2026-05-19 11:18:01.496 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 田野欢歌 +2026-05-19 11:18:01.497 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 三农长短说 +2026-05-19 11:18:01.498 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 三农群英汇 +2026-05-19 11:18:01.498 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 大地讲堂 +2026-05-19 11:18:01.498 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 片库 +2026-05-19 11:18:01.499 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 热榜 +2026-05-19 11:18:01.499 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 看点 +2026-05-19 11:18:01.499 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-19 11:18:01.499 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: ai美食 +2026-05-19 11:18:01.500 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主持人 +2026-05-19 11:18:01.500 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 全部 +2026-05-19 11:18:01.500 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播 +2026-05-19 11:18:01.500 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-19 11:18:01.501 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 热榜 +2026-05-19 11:18:01.502 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主持人 +2026-05-19 11:18:01.502 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-19 11:18:01.502 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻联播 +2026-05-19 11:18:01.502 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 焦点访谈 +2026-05-19 11:18:01.503 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 等着我 +2026-05-19 11:18:01.503 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日说法 +2026-05-19 11:18:01.503 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 海峡两岸 +2026-05-19 11:18:01.504 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日关注 +2026-05-19 11:18:01.504 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日亚洲 +2026-05-19 11:18:01.504 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 更多 +2026-05-19 11:18:01.504 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-19 11:18:01.504 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 动画片 +2026-05-19 11:18:01.506 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录片 +2026-05-19 11:18:01.506 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 特别节目 +2026-05-19 11:18:01.506 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 更多 +2026-05-19 11:18:01.506 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-19 11:18:01.507 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 视频百科 +2026-05-19 11:18:01.508 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微故事 +2026-05-19 11:18:01.510 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: ai美食 +2026-05-19 11:18:01.510 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日热门 +2026-05-19 11:18:01.512 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播导视 +2026-05-19 11:18:01.512 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 精品 +2026-05-19 11:18:01.514 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 片库 +2026-05-19 11:18:01.515 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 看点 +2026-05-19 11:18:01.516 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 央视大全 +2026-05-19 11:18:01.518 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 手机访问 扫描下载央 视影音客户端 扫一扫 手机继续看 +2026-05-19 11:18:01.521 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 返回顶部 +2026-05-19 11:18:01.521 [main] INFO c.e.datacollect.command.CrawlCommand - Successfully crawled 189 articles from https://tv.cctv.com +2026-05-19 11:18:01.521 [main] INFO c.e.datacollect.view.ConsoleView - Success: Crawled 189 articles. +2026-05-19 11:18:01.522 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:18:12.244 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: list +2026-05-19 11:18:12.244 [main] DEBUG c.e.datacollect.command.ListCommand - Listing articles +2026-05-19 11:18:12.245 [main] DEBUG c.e.d.repository.ArticleRepository - Returning 190 articles (unmodifiable) +2026-05-19 11:18:12.246 [main] DEBUG c.e.datacollect.view.ConsoleView - Displaying 190 articles +2026-05-19 11:18:12.317 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:18:49.649 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-19 11:18:49.650 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://www.tianqi.com/changsha +2026-05-19 11:18:49.651 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:18:49.651 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:18:49.651 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:18:49.652 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:18:49.652 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://www.tianqi.com/changsha: false +2026-05-19 11:18:49.652 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL https://www.tianqi.com/changsha: true +2026-05-19 11:18:49.663 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy WeatherStrategy for URL: https://www.tianqi.com/changsha +2026-05-19 11:18:49.666 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://www.tianqi.com/changsha +2026-05-19 11:18:49.668 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://www.tianqi.com/changsha +2026-05-19 11:18:49.669 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://www.tianqi.com/changsha +2026-05-19 11:18:49.912 [main] DEBUG c.e.d.strategy.WeatherStrategy - Parsing weather page: https://www.tianqi.com/changsha +2026-05-19 11:18:49.921 [main] INFO c.e.d.strategy.WeatherStrategy - Parsed 1 weather items +2026-05-19 11:18:49.923 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 2026年05月19日 长沙天气 +2026-05-19 11:18:49.941 [main] INFO c.e.datacollect.command.CrawlCommand - Successfully crawled 1 articles from https://www.tianqi.com/changsha +2026-05-19 11:18:49.945 [main] INFO c.e.datacollect.view.ConsoleView - Success: Crawled 1 articles. +2026-05-19 11:18:49.948 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-19 11:18:54.406 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: list +2026-05-19 11:18:54.406 [main] DEBUG c.e.datacollect.command.ListCommand - Listing articles +2026-05-19 11:18:54.407 [main] DEBUG c.e.d.repository.ArticleRepository - Returning 191 articles (unmodifiable) +2026-05-19 11:18:54.407 [main] DEBUG c.e.datacollect.view.ConsoleView - Displaying 191 articles +2026-05-19 11:18:54.473 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console diff --git a/project/java1/logs/crawler.2026-05-29.log b/project/java1/logs/crawler.2026-05-29.log new file mode 100644 index 0000000..a1d5cb2 --- /dev/null +++ b/project/java1/logs/crawler.2026-05-29.log @@ -0,0 +1,10 @@ +2026-05-29 21:12:33.490 [main] INFO com.example.datacollect.Main - Starting CLI Crawler application +2026-05-29 21:12:33.502 [main] INFO c.e.d.strategy.StrategyFactory - StrategyFactory initialized with 6 strategies +2026-05-29 21:12:33.504 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: help +2026-05-29 21:12:33.504 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: list +2026-05-29 21:12:33.505 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: crawl +2026-05-29 21:12:33.505 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: exit +2026-05-29 21:12:33.505 [main] INFO c.e.d.controller.CrawlerController - CrawlerController initialized with 4 commands +2026-05-29 21:12:33.508 [main] INFO c.e.datacollect.view.ConsoleView - Success: Welcome to CLI Crawler (w10_3)! Type help for commands. +2026-05-29 21:12:33.508 [main] INFO com.example.datacollect.Main - Application ready, waiting for input +2026-05-29 21:12:33.509 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console diff --git a/project/java1/logs/crawler.log b/project/java1/logs/crawler.log new file mode 100644 index 0000000..f47f78d --- /dev/null +++ b/project/java1/logs/crawler.log @@ -0,0 +1,295 @@ +2026-05-30 17:20:04.108 [main] INFO com.example.datacollect.Main - Starting CLI Crawler application +2026-05-30 17:20:04.119 [main] INFO c.e.d.strategy.StrategyFactory - StrategyFactory initialized with 6 strategies +2026-05-30 17:20:04.120 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: help +2026-05-30 17:20:04.121 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: list +2026-05-30 17:20:04.121 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: crawl +2026-05-30 17:20:04.121 [main] DEBUG c.e.d.controller.CrawlerController - Registered command: exit +2026-05-30 17:20:04.122 [main] INFO c.e.d.controller.CrawlerController - CrawlerController initialized with 4 commands +2026-05-30 17:20:04.126 [main] INFO c.e.datacollect.view.ConsoleView - Success: Welcome to CLI Crawler (w10_3)! Type help for commands. +2026-05-30 17:20:04.126 [main] INFO com.example.datacollect.Main - Application ready, waiting for input +2026-05-30 17:20:04.126 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:20:20.147 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: help +2026-05-30 17:20:20.147 [main] DEBUG c.e.datacollect.command.HelpCommand - Displaying help +2026-05-30 17:20:20.147 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Commands: crawl , list, help, exit +2026-05-30 17:20:20.148 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-30 17:21:31.732 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://www.weibo.com +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://www.weibo.com: false +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://www.weibo.com: false +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://www.weibo.com: false +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://www.weibo.com: true +2026-05-30 17:21:31.732 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy WeiboHotStrategy for URL: https://www.weibo.com +2026-05-30 17:21:31.732 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://www.weibo.com +2026-05-30 17:21:31.733 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://www.weibo.com +2026-05-30 17:21:31.733 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://www.weibo.com +2026-05-30 17:21:32.506 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - Parsing Weibo hot page: https://www.weibo.com +2026-05-30 17:21:32.506 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - Found 0 hot items +2026-05-30 17:21:32.506 [main] INFO c.e.d.strategy.WeiboHotStrategy - Parsed 0 hot topics from Weibo +2026-05-30 17:21:32.507 [main] INFO c.e.datacollect.command.CrawlCommand - Successfully crawled 0 articles from https://www.weibo.com +2026-05-30 17:21:32.507 [main] INFO c.e.datacollect.view.ConsoleView - Success: Crawled 0 articles. +2026-05-30 17:21:32.507 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:21:37.322 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: list +2026-05-30 17:21:37.322 [main] DEBUG c.e.datacollect.command.ListCommand - Listing articles +2026-05-30 17:21:37.323 [main] DEBUG c.e.d.repository.ArticleRepository - Returning 0 articles (unmodifiable) +2026-05-30 17:21:37.323 [main] DEBUG c.e.datacollect.view.ConsoleView - Displaying 0 articles +2026-05-30 17:21:37.323 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: 暂无文章,请先执行 crawl。 +2026-05-30 17:21:37.323 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:22:20.007 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-30 17:22:20.007 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://www.tv.cctv.com +2026-05-30 17:22:20.007 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://www.tv.cctv.com: false +2026-05-30 17:22:20.007 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://www.tv.cctv.com: false +2026-05-30 17:22:20.007 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://www.tv.cctv.com: false +2026-05-30 17:22:20.008 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://www.tv.cctv.com: false +2026-05-30 17:22:20.008 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://www.tv.cctv.com: true +2026-05-30 17:22:20.008 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy CctvNewsStrategy for URL: https://www.tv.cctv.com +2026-05-30 17:22:20.008 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://www.tv.cctv.com +2026-05-30 17:22:20.008 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://www.tv.cctv.com +2026-05-30 17:22:20.008 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://www.tv.cctv.com +2026-05-30 17:22:20.034 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 1 failed for URL https://www.tv.cctv.com: www.tv.cctv.com +2026-05-30 17:22:20.035 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-30 17:22:21.041 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 2 to fetch URL: https://www.tv.cctv.com +2026-05-30 17:22:21.043 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 2 failed for URL https://www.tv.cctv.com: www.tv.cctv.com +2026-05-30 17:22:21.043 [main] INFO c.e.datacollect.command.CrawlCommand - Retrying in 1000ms... +2026-05-30 17:22:22.051 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 3 to fetch URL: https://www.tv.cctv.com +2026-05-30 17:22:22.052 [main] WARN c.e.datacollect.command.CrawlCommand - Attempt 3 failed for URL https://www.tv.cctv.com: www.tv.cctv.com +2026-05-30 17:22:22.052 [main] ERROR c.e.datacollect.command.CrawlCommand - Failed to fetch URL after 3 attempts: https://www.tv.cctv.com +2026-05-30 17:22:22.052 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Failed to fetch URL after 3 attempts: https://www.tv.cctv.com +2026-05-30 17:22:22.052 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:23:04.437 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-30 17:23:04.437 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://news.cctv.com +2026-05-30 17:23:04.437 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.437 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.437 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.437 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.438 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.438 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL https://news.cctv.com: false +2026-05-30 17:23:04.438 [main] WARN c.e.d.strategy.StrategyFactory - No strategy found for URL: https://news.cctv.com +2026-05-30 17:23:04.438 [main] WARN c.e.datacollect.command.CrawlCommand - No strategy found for: https://news.cctv.com +2026-05-30 17:23:04.438 [main] ERROR c.e.datacollect.view.ConsoleView - Error: No strategy found for: https://news.cctv.com +2026-05-30 17:23:04.438 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:26:09.460 [main] WARN c.e.d.controller.CrawlerController - Unknown command: ceawl +2026-05-30 17:26:09.460 [main] ERROR c.e.datacollect.view.ConsoleView - Error: Unknown command: ceawl +2026-05-30 17:26:09.462 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-30 17:27:17.037 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://www.news.cctv.com +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] DEBUG c.e.d.strategy.WeatherStrategy - WeatherStrategy supports URL https://www.news.cctv.com: false +2026-05-30 17:27:17.037 [main] WARN c.e.d.strategy.StrategyFactory - No strategy found for URL: https://www.news.cctv.com +2026-05-30 17:27:17.037 [main] WARN c.e.datacollect.command.CrawlCommand - No strategy found for: https://www.news.cctv.com +2026-05-30 17:27:17.037 [main] ERROR c.e.datacollect.view.ConsoleView - Error: No strategy found for: https://www.news.cctv.com +2026-05-30 17:27:17.038 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:37:12.487 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: crawl +2026-05-30 17:37:12.487 [main] INFO c.e.datacollect.command.CrawlCommand - Crawl started for: https://tv.cctv.com +2026-05-30 17:37:12.487 [main] DEBUG c.e.d.strategy.HnuNewsStrategy - HnuNewsStrategy supports URL https://tv.cctv.com: false +2026-05-30 17:37:12.487 [main] DEBUG c.e.d.strategy.BlogStrategy - BlogStrategy supports URL https://tv.cctv.com: false +2026-05-30 17:37:12.487 [main] DEBUG c.e.d.strategy.NewsStrategy - NewsStrategy supports URL https://tv.cctv.com: false +2026-05-30 17:37:12.488 [main] DEBUG c.e.d.strategy.WeiboHotStrategy - WeiboHotStrategy supports URL https://tv.cctv.com: false +2026-05-30 17:37:12.488 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - CctvNewsStrategy supports URL https://tv.cctv.com: true +2026-05-30 17:37:12.488 [main] DEBUG c.e.d.strategy.StrategyFactory - Found strategy CctvNewsStrategy for URL: https://tv.cctv.com +2026-05-30 17:37:12.488 [main] INFO c.e.datacollect.command.CrawlCommand - Starting crawl for URL: https://tv.cctv.com +2026-05-30 17:37:12.488 [main] DEBUG c.e.datacollect.view.ConsoleView - Info: Crawling: https://tv.cctv.com +2026-05-30 17:37:12.488 [main] DEBUG c.e.datacollect.command.CrawlCommand - Attempt 1 to fetch URL: https://tv.cctv.com +2026-05-30 17:37:13.701 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - Parsing CCTV news page: https://tv.cctv.com +2026-05-30 17:37:13.707 [main] DEBUG c.e.d.strategy.CctvNewsStrategy - Found 0 news items +2026-05-30 17:37:13.748 [main] INFO c.e.d.strategy.CctvNewsStrategy - Parsed 189 news from CCTV +2026-05-30 17:37:13.748 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直 播 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 频道大全 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 栏目大全 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主 持 人 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 焦点访谈 +2026-05-30 17:37:13.750 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 朝闻天下 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 星推荐 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 天下财经 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 高端访谈 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综合 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 财经 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综艺 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 亚洲 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电影 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防军事 +2026-05-30 17:37:13.751 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科教 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 社会与法 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 少儿 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 奥林匹克 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 农业农村 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 欧洲 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 美洲 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育赛事 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 搜片库 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 找栏目 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 每周质量报告 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 开讲啦 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一槌定音 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国创新药叩开欧美大门 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一旦点击 木马将自动入侵! +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 未成年人打赏47万 钱能退吗? +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 深度透视 伊朗导弹战力如何? +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 黄文秀:最美芳华绽放扶贫路 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 太空“换班”完成!准备回家 +2026-05-30 17:37:13.753 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 第二艘国产大邮轮完成海上试航 +2026-05-30 17:37:13.758 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 五角大楼和SpaceX吵起来了 +2026-05-30 17:37:13.759 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 揭开“西北第一枪厂”神秘面纱 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 华为新路线:半导体新赛道 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 广告 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 帛书传奇 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 千年包公 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 清宫秘档 +2026-05-30 17:37:13.760 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 大唐继位风云 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 花开中国(第二季) +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《太行谣》再现“太行奶娘”的感人故事 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《突击再突击》演绎山地战士的热血梦 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《医者仁心》守卫生命 感恩“医”路有你 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《大宅门》推开这扇门 看到家、国、天下 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 《湄公河大案》大案实录缉毒版“无间道” +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 频道大全 +2026-05-30 17:37:13.761 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 栏目大全 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综合 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 财经 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 综艺 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中文国际 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电影 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防军事 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-30 17:37:13.762 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科教 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 社会与法 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 少儿 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体育赛事 +2026-05-30 17:37:13.764 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 农业农村 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻联播 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 挑战不可能 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 开讲啦 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 人与自然 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 生活提示 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国诗词大会 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 对话 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 第一时间 +2026-05-30 17:37:13.765 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一槌定音 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 回家吃饭 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 生活家 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 金牌喜剧班 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 舞蹈世界 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 星光大道 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 向幸福出发 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 回声嘹亮 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 健康中国 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 深度国际 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国文艺 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国家记忆 +2026-05-30 17:37:13.766 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 华人故事 +2026-05-30 17:37:13.767 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 运动一起赢 +2026-05-30 17:37:13.767 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 体坛快讯 +2026-05-30 17:37:13.767 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 足球之夜 +2026-05-30 17:37:13.767 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日影评 +2026-05-30 17:37:13.767 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 时光军史馆 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军迷行天下 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事报道 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事纪实 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 军事纪录 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 国防故事 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 剧说很好看 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 寰宇视野 +2026-05-30 17:37:13.768 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 特别呈现 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 9视频 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 百家讲坛 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 健康之路 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 科幻地带 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 考古公开课 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 解码科技史 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 戏曲青年说 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国京剧音配像精粹 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 过把瘾 +2026-05-30 17:37:13.769 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 宝贝亮相吧 +2026-05-30 17:37:13.770 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 剧懂法 +2026-05-30 17:37:13.770 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 一线 +2026-05-30 17:37:13.770 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 普法剧场 +2026-05-30 17:37:13.770 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 天网 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 心理访谈 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 律师来了 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 焦点访谈 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 每周质量报告 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 午夜新闻 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻调查 +2026-05-30 17:37:13.771 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻周刊 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 周末动画片 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 音乐快递 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻袋袋裤 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 智慧树 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 快乐童行 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 乐享汇 +2026-05-30 17:37:13.772 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: CCTV音乐厅 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 中国音乐电视 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 聆听时刻 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 童声唱 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 冰球冰球 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 田野欢歌 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 三农长短说 +2026-05-30 17:37:13.773 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 三农群英汇 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 大地讲堂 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 片库 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 热榜 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 看点 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: ai美食 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主持人 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 全部 +2026-05-30 17:37:13.774 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 节目单 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 热播榜 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 主持人 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 听音 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 新闻联播 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 焦点访谈 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 等着我 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日说法 +2026-05-30 17:37:13.775 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 海峡两岸 +2026-05-30 17:37:13.776 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日关注 +2026-05-30 17:37:13.776 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日亚洲 +2026-05-30 17:37:13.776 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 更多 +2026-05-30 17:37:13.776 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 电视剧 +2026-05-30 17:37:13.777 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 动画片 +2026-05-30 17:37:13.777 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 纪录片 +2026-05-30 17:37:13.777 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 特别节目 +2026-05-30 17:37:13.777 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 更多 +2026-05-30 17:37:13.777 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微视频 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 视频百科 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 微故事 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: ai美食 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 今日热门 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 直播导视 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 精品 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 片库 +2026-05-30 17:37:13.778 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 看点 +2026-05-30 17:37:13.779 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 央视大全 +2026-05-30 17:37:13.779 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 手机访问 扫描下载央 视影音客户端 扫一扫 手机继续看 +2026-05-30 17:37:13.779 [main] DEBUG c.e.d.repository.ArticleRepository - Added article: 返回顶部 +2026-05-30 17:37:13.779 [main] INFO c.e.datacollect.command.CrawlCommand - Successfully crawled 189 articles from https://tv.cctv.com +2026-05-30 17:37:13.779 [main] INFO c.e.datacollect.view.ConsoleView - Success: Crawled 189 articles. +2026-05-30 17:37:13.779 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console +2026-05-30 17:37:21.446 [main] DEBUG c.e.d.controller.CrawlerController - Executing command: list +2026-05-30 17:37:21.446 [main] DEBUG c.e.datacollect.command.ListCommand - Listing articles +2026-05-30 17:37:21.446 [main] DEBUG c.e.d.repository.ArticleRepository - Returning 189 articles (unmodifiable) +2026-05-30 17:37:21.446 [main] DEBUG c.e.datacollect.view.ConsoleView - Displaying 189 articles +2026-05-30 17:37:21.459 [main] DEBUG c.e.datacollect.view.ConsoleView - Reading input from console