1. Introducción a Jsoup
Jsoup es un analizador HTML de Java que puede analizar directamente una dirección URL y contenido de texto HTML. Proporciona una API que ahorra mucho trabajo, que puede recuperar y manipular datos a través de DOM, CSS y métodos de operación similares a jQuery.
Dos, la función principal de Jsoup
1. Analizar HTML de una URL, archivo o cadena
2. Utilice selectores DOM o CSS para buscar y recuperar datos
3. Elementos, atributos y texto HTML operables
Nota: jsoup se lanza según el protocolo MIT y se puede utilizar en proyectos comerciales con confianza.
Tres, introducción al uso de Jsoup
1. Obtenga el objeto Documento
Document document = Jsoup.parse(new File("D:\\information\\test.html"), "utf-8");
2. Utilice DOM para obtener
Después de obtener el objeto Documento, el siguiente paso es analizar el objeto Documento y obtener los elementos que queremos de él.
Document proporciona una gran cantidad de métodos para obtener elementos específicos.
- getElementById (String id): obtener por id
- getElementsByTag (String tagName): obtener por nombre de etiqueta
- getElementsByClass (String className): obtener por nombre de clase
- getElementsByAttribute (clave de cadena): obtener por nombre de atributo
- getElementsByAttributeValue (clave de cadena, valor de cadena): se obtiene especificando el nombre del atributo y el valor del atributo
- getAllElements (): Obtiene todos los elementos
3. Encuentra el elemento a través del selector.
Encuentre elementos a través de selectores similares a css o jQuery
Se utiliza el siguiente método de la clase Element:
public Elements select(String cssQuery)
Encuentre el elemento especificado pasando una cadena de selección similar a CSS o jQuery.
Cuatro, ejemplo de código de Jsoup
La intención original del blog es analizar la tabla en HTML y convertirla en Bean.
1. Introducir dependencias
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.12.1</version>
</dependency>
2. Ejemplo de código
//通过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());
}
}
Analice los datos en HTML en un mapa de hash, todo está claro de un vistazo.
Cinco, Mapa a 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;
}
Seis, analiza el archivo CSV
1. Archivo CSV
2. Clase de frijoles
@Data
public class ScoreBean {
private Object id;
private Object score;
}
3. Cómo leer un archivo 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. Pruebas
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);
}
}
5. Salida de consola
Aspectos destacados del pasado:
Resumen del sistema de conocimiento de Java (versión 2021)
Resumen de conocimientos básicos de Java multiproceso (absolutamente clásico)
Notas de estudio super detalladas de SpringBoot
Resumen de algoritmos y estructuras de datos comunes
Patrones de diseño de Java: un análisis completo de 23 patrones de diseño (súper detallado)
Resumen de las preguntas de la entrevista de Java (con respuestas)