package case_package1; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.http.HttpUtil; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static case_package1.Test.getInfos; public class Test2 { public static void main(String[] args) { //利用糊涂包生成假数据,并写到文件中 //1、定义网址 String familyNameNet = "https://hanyu.baidu.com/s?wd=%E7%99%BE%E5%AE%B6%E5%A7%93&device=pc&from=home"; String boyNameNet = "http://www.haoming8.cn/baobao/12560.html"; String girlNameNet = "http://www.haoming8.cn/baobao/4155.html"; //2、爬取数据 String familyNameStr = HttpUtil.get(familyNameNet); String boyNameStr = HttpUtil.get(boyNameNet); String girlNameStr = HttpUtil.get(girlNameNet); //3、利用正则表达式获取数据 List familyNameTempList = ReUtil.findAll("(.{4})(,|。)", familyNameStr, 1); List boyNameTempList = ReUtil.findAll("([\\u4E00-\\u9FA5]{2})(、|。)", boyNameStr, 1); List girlNameTempList = ReUtil.findAll("(.. ){4}..", girlNameStr, 0); //4、处理数据 //familyNameTempList(姓氏) //处理方案:把每一个姓氏拆开并添加到一个新的集合当中 ArrayList familyNameList = new ArrayList<>(); for (String str : familyNameTempList) { for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); familyNameList.add(c + ""); } } //System.out.println(familyNameList); //boyNameTempList(男生的名字) //处理方案:去除其中的重复元素 ArrayList boyNameList = new ArrayList<>(); for (String str : boyNameTempList) { if (!boyNameList.contains(str)) { boyNameList.add(str); } } //System.out.println(boyNameList); //girlNameTempList(女生的姓名) //处理方案:把里面的每一个元素用空格进行切割,得到每一个女生的名字 ArrayList girlNameList = new ArrayList<>(); for (String str : girlNameTempList) { String[] arr = str.split(" "); for (int i = 0; i < arr.length; i++) { girlNameList.add(arr[i]); } } //System.out.println(girlNameList); //5、生成数据 //姓名(唯一)-性别-年龄 ArrayList infos = getInfos(familyNameList, boyNameList, girlNameList, 10, 15); Collections.shuffle(infos); //System.out.println(infos); //6、写出数据 //细节: //糊涂包的相对路径,不是相对于当前项目而言的,而是相对于class文件而言的 FileUtil.writeLines(infos, "/Users/zhaoxiaoyong/Documents/Java/" + "IO_stream_project/Case_module/src/NameInfos.txt", "UTF-8"); } }