package com.crawler.common; import java.io.IOException; import java.util.ArrayList; import java.util.List; public abstract class BaseCrawler { public abstract List crawl(); public void saveToCSV(List data, String filePath) throws IOException { if (data == null || data.isEmpty()) { LoggerUtil.warn("没有数据需要保存"); return; } CsvUtil.ensureDirectoryExists(filePath); List csvData = convertToCsvFormat(data); CsvUtil.write(filePath, csvData); } public List loadFromCSV(String filePath) throws IOException { if (!CsvUtil.fileExists(filePath)) { LoggerUtil.warn("文件不存在: {}", filePath); return new ArrayList<>(); } List csvData = CsvUtil.read(filePath); return convertFromCsvFormat(csvData); } protected abstract List convertToCsvFormat(List data); protected abstract List convertFromCsvFormat(List csvData); }