Java通过Jsoup解析HTML文件,已成功拿下字节、腾讯、脉脉offer

2、代码实例


//通过Jsoup获取table中对应标签的信息

private static void HTMLParserMapInit() throws IOException {

		Document document = Jsoup.parse(new File("D:\\information\\test.html"), "utf-8");

        Elements table_title = document.select(".title");

        Elements tables = document.select(".left");

        for(int i=0;i<table_title.size();i++) {

        	String title = table_title.get(i).text();

            String keyLevel1 = "";

		    String keyLevel2 = "";

		    String value = "";

		    String tag_rowspan = "";

		    String tag_colspan = "";

		    String tag_class = "";

		    String tag_text = "";

		    String title = "";

            String table = tables.get(i);

		    Elements tr =  table.select("tr");

		    for(Element eTr : tr){

			    Elements td = eTr.select("td");

			    for(Element eTd : td){

				    tag_rowspan = eTd.attr("rowspan");

				    tag_colspan = eTd.attr("colspan");

				    tag_class = eTd.attr("class");

				    tag_text = eTd.text();

				    if(!tag_colspan.equals("")) {

					    title += tag_text + ",";

				    }

				    if((tag_class.equals("class2"))) {

					    keyLevel1 = tag_text;

				    }else if((tag_class.equals("class1"))) {

					    keyLevel2 = tag_text;

				    }else if(tag_class.equals("")){

					    value += tag_text+",";

				    }

			        }

			    if(!(keyLevel1.equals("")&&keyLevel1.equals(""))) {

				    if(!value.equals("")) {

					    value = value.substring(0,value.length() - 1);

					    shiftInformationHashMap.put(keyLevel1 + "," + keyLevel2, value);

				    }

				        value = "";                                                                                                                                             

                }

		    }

		    title = title.toString().substring(0,title.length() - 1);

		    System.out.println("title,"+title);

		    System.out.println("hashMap,"+shiftInformationHashMap.toString());

				

		}

	}

将HTML中数据解析成hashmap,一切就一目了然了。

五、Map转为Bean



public static <T, V> T map2Bean(Map<String,V> map,Class<T> clz) throws Exception{

	T obj = clz.newInstance();

	Field field = null;

	for(String key : map.keySet()) {

		field = obj.getClass().getDeclaredField(key);

		field.setAccessible(true);

		field.set(obj, map.get(key));

	}

	return obj;

}

六、解析CSV文件


1、CSV文件

2、Bean类


@Data

public class ScoreBean {

	private Object id;

	private Object score;

}

3、读取CSV文件方法


​public static List<HashMap<String, Object>> readCSVToList(String filePath) throws Exception {

	List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();

	BufferedReader reader = null;

	try {

		reader = new BufferedReader(new FileReader(filePath));

        String[] headtilte = reader.readLine().split(",");

        String line = null;

        while ((line = reader.readLine()) != null) {

        	HashMap<String, Object> hashMap = new HashMap<String, Object>();

            String[] itemArray = line.split(",");

            for (int i = 0; i < itemArray.length; i++) {

            	hashMap.put(headtilte[i], itemArray[i]);

            }

            list.add(hashMap);

        }

	} catch (Exception e) {

		e.printStackTrace();

	} finally {

		if (null != reader) {

			reader.close();

		}

	}

	return list;

}

4、测试类


public static void main(String[] args) throws Exception {

	String path = "D:\\scoreInfo.csv";

	    List<HashMap<String, Object>> list = readCSVToList(path);

	    for(HashMap hashMap:list) {

	        BeanUtil.HashMapToBeanUtil(hashMap,ScoreBean.class);



### 最后

**为什么我不完全主张自学?
①**平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

**应该学哪些技术才能达到企业的要求?(下图总结)**

**[Java全套资料免费领取方式:戳这里](https://gitee.com/vip204888/java-p7)**

![](https://img-blog.csdnimg.cn/img_convert/a7604dfcc994de5c2b7e61ad9932e0f2.png)

![](https://img-blog.csdnimg.cn/img_convert/66b966fb8215f44c5dca37c785d52594.png)

教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

**应该学哪些技术才能达到企业的要求?(下图总结)**

**[Java全套资料免费领取方式:戳这里](https://gitee.com/vip204888/java-p7)**

[外链图片转存中...(img-COPhODwV-1628579225500)]

[外链图片转存中...(img-yETulbhc-1628579225502)]


版权声明:本文为m0_60747327原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。