You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.3 KiB
60 lines
2.3 KiB
package java01;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
// 1. 初始化爬虫
|
|
JobCrawler crawler = new JobCrawler();
|
|
|
|
// 2. 爬取数据
|
|
System.out.println("开始爬取招聘数据...");
|
|
List<Job> jobs = crawler.crawlJobs("Java", 3); // 爬取3页数据
|
|
System.out.println("爬取完成,共获取 " + jobs.size() + " 条职位信息");
|
|
|
|
// 3. 数据清洗
|
|
DataCleaner cleaner = new DataCleaner();
|
|
jobs = cleaner.cleanJobs(jobs);
|
|
System.out.println("数据清洗完成");
|
|
|
|
// 4. 数据存储
|
|
DataStorage storage = new DataStorage();
|
|
storage.writeJobsToCSV(jobs, "jobs.csv");
|
|
|
|
// 5. 数据分析
|
|
DataAnalyzer analyzer = new DataAnalyzer();
|
|
|
|
// 分析技能词频
|
|
Map<String, Integer> skillFrequency = analyzer.analyzeSkillFrequency(jobs);
|
|
|
|
// 分析薪资与经验关系
|
|
Map<String, Double> salaryByExperience = analyzer.analyzeSalaryByExperience(jobs);
|
|
|
|
// 分析薪资与学历关系
|
|
Map<String, Double> salaryByEducation = analyzer.analyzeSalaryByEducation(jobs);
|
|
|
|
// 分析不同地点薪资水平
|
|
Map<String, Double> salaryByLocation = analyzer.analyzeSalaryByLocation(jobs);
|
|
|
|
// 分析薪资分布
|
|
Map<String, Integer> salaryDistribution = analyzer.analyzeSalaryDistribution(jobs);
|
|
|
|
// 6. 结果展示
|
|
ResultDisplay display = new ResultDisplay();
|
|
|
|
// 控制台输出
|
|
display.displaySkillFrequency(skillFrequency);
|
|
display.displaySalaryByExperience(salaryByExperience);
|
|
display.displaySalaryByEducation(salaryByEducation);
|
|
display.displaySalaryByLocation(salaryByLocation);
|
|
display.displaySalaryDistribution(salaryDistribution);
|
|
|
|
// 生成图表
|
|
display.generateSkillFrequencyChart(skillFrequency, "skill_frequency.png");
|
|
display.generateSalaryDistributionChart(salaryDistribution, "salary_distribution.png");
|
|
display.generateSalaryByExperienceChart(salaryByExperience, "salary_by_experience.png");
|
|
|
|
System.out.println("\n所有任务完成!");
|
|
}
|
|
}
|