public class AnalyzeCommand implements Command { private static final Pattern URL_PATTERN = Pattern.compile("^(https?://)?([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)*$"); private final ConsoleView view; private final StrategyFactory strategyFactory; public AnalyzeCommand(ConsoleView view, StrategyFactory strategyFactory) { this.view = view; this.strategyFactory = strategyFactory; } @Override public String getName() { return "analyze"; } @Override public void execute(String[] args, List
unused) { if (args.length < 2) { view.printError("用法:analyze "); return; } String url = args[1]; if (!isValidUrl(url)) { view.printError("无效的URL格式:" + url); return; } try { List
parsedArticles = strategyFactory.getStrategy(url).crawl(url); printAnalysisResult(url, parsedArticles); } catch (Exception e) { view.printError("解析失败:" + e.getMessage()); } } private void printAnalysisResult(String url, List
articles) { view.printInfo("解析统计结果 "); view.printInfo("目标 URL:" + url); view.printInfo("解析到文章数量:" + articles.size()); if (!articles.isEmpty()) { Article first = articles.get(0); view.printInfo("首篇文章标题:" + first.getTitle()); view.printInfo("首篇文章作者:" + first.getAuthor()); view.printInfo("首篇发布日期:" + first.getPublishDate()); } } private boolean isValidUrl(String url) { return url != null && URL_PATTERN.matcher(url).matches(); } }