package com.example.datacollect.w9.command; import com.example.datacollect.w9.model.Article; import com.example.datacollect.w9.view.ConsoleView; import java.util.List; import java.util.regex.Pattern; public class CrawlCommand implements Command { private static final Pattern URL_PATTERN = Pattern.compile("^(https?://)?([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)*$"); private final ConsoleView view; private final List
articles; public CrawlCommand(ConsoleView view, List
articles) { this.view = view; this.articles = articles; } @Override public String getName() { return "crawl"; } @Override public void execute(String[] args, List
articles) { if (args.length < 2) { view.printError("用法:crawl "); return; } String url = args[1]; if (!isValidUrl(url)) { view.printError("URL 格式不正确"); return; } // 模拟爬取 Article art = new Article( "模拟标题-" + (articles.size() + 1), url, "模拟正文内容", "模拟作者", "2026-05-31" ); articles.add(art); view.printSuccess("爬取成功:" + art.getTitle()); } private boolean isValidUrl(String url) { return url != null && URL_PATTERN.matcher(url).matches(); } }