zxy0307's picture
Upload 2300 files
0284885 verified
Raw History Blame Contribute Delete
3.05 kB
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<String> familyNameTempList = ReUtil.findAll("(.{4})(,|。)", familyNameStr, 1);
List<String> boyNameTempList = ReUtil.findAll("([\\u4E00-\\u9FA5]{2})(、|。)", boyNameStr, 1);
List<String> girlNameTempList = ReUtil.findAll("(.. ){4}..", girlNameStr, 0);
//4、处理数据
//familyNameTempList(姓氏)
//处理方案:把每一个姓氏拆开并添加到一个新的集合当中
ArrayList<String> 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<String> boyNameList = new ArrayList<>();
for (String str : boyNameTempList) {
if (!boyNameList.contains(str)) {
boyNameList.add(str);
}
}
//System.out.println(boyNameList);
//girlNameTempList(女生的姓名)
//处理方案:把里面的每一个元素用空格进行切割,得到每一个女生的名字
ArrayList<String> 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<String> 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");
}
}